标签:验证 public 页面 webform server res OLE btn eve
xxx.aspx页面和对应的xxx.aspx.cs的数据传递,然后实现登录验证并且将值保存到Session中,上次有用Ajax测试实现了,但是后面发现一个问题,Ajax传递到cs页面之后,如果要在被加上了 [WebMethod] 参数的静态方法中使用Session的话就会报错“ "未将对象引用设置到对象的实例。”
[WebMethod] public static string GetUserName() { String username=Session.["role"].toString();//这里会报错 //...... }
如果想要在这个方法中使用Session,还要给这个方法加点东西。
[WebMethod(EnableSession = true)] //或改为[WebMethod(true)] //将静态方法上面的[Method]的EnableSession值改为true就可以了
到这里,结合上一篇发的博文,我遇到的问题算是解决了。
这里还有另一种简单的方法,举个例子来说: A.aspx将用户输入的账号和姓名或者其他信,在点击提交按钮后传到 B.aspx页面中,然后 B.aspx.cs接收到A.aspx发送过来的数据。听起来比上一个方法麻烦,不过既然学习到了就写下来。代码参考如下
A.aspx (A.aspx.cs这里不需要改)
<!--body部分--> <body> <form action="getpost.aspx" method="post"> <input type="submit" ID="btnSearch" name="btnSearch" value="登录" class="button btn" /> <input id="username" name="username" class="text" value="<%=Request.QueryString["key"] %>" type="text" /> <input id="password" name="password" class="text" value="<%=Request.QueryString["key"] %>" type="text" /> </form> </body>
B.aspx 而这个页面只需要保留下面这一行就可以
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="B.aspx.cs" Inherits="TestASP_HTml.B" %>
B.aspx.cs
//放到Page_Load方法内 string username = Server.UrlEncode(Request.Form["username"]); String password = Server.UrlEncode(Request.Form["password"]); Database1Entities db = new Database1Entities(); var result = from ee in db.Table where ee.Id.Equals(username ) where ee.name.Equals(password ) select ee; foreach (var kk in result) { //登录成功!跳转页面 Response.Redirect("WebForm1.aspx"); }
这样就ok了。
[C#] Request.QueryString()测试:用html而非asp控件实现简单登录验证
标签:验证 public 页面 webform server res OLE btn eve
原文地址:https://www.cnblogs.com/Damocles-Sword/p/13199966.html