大致概括一下,ASP.NET页面之间传值得几种方式可以分为以下几种:
Request.QueryString["name"] 、Request.Form["name"]、Session、Cookie、Application、Server.Transfer、Cache、DataBase、
HttpContext 的 Item属性、Files等
1、Request.QueryString :获取地址栏参数(以GET方式提交的数据)
a.aspx
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
b.aspx
Label2.Text = Request.QueryString["name"];
注:Request.QueryString主要是获取url中的“?”后的参数,如url:a.aspx?name="queryString",则Request.QueryString["name"]的值为“queryString”。
Request.QueryString:获取http查询字符串变量集合。有两重载,即Request.QueryString[string name]和Request.QueryString[int index];
2、Request.Form:获取以POST方式提交的数据(获取 Form 窗体变量集合);
< form id="form2" method="post" runat="server">
< div>
你的名字: < asp:TextBox ID="name2" runat="server">< /asp:TextBox>< br /> < br />
你的网站:< asp:TextBox ID="website2" runat="server">< /asp:TextBox>< br /> < br />
< asp:Button ID="Button2" runat="server" Text="send" />< br />
< /div>
< /form>
protected void Page_Load(object sender, EventArgs e)
{
string id2 = Request.Form["name2"];
string website2 = Request.Form["website2"];
Response.Write(id2 + "< br>" + website2);
}
注意:Request.Form 获取窗体变量集合。有两重载,即Request.Form[string name]和Requst.Form[int index]。
获取表单指定名字的参数值
同时接受get和post 方法传送数据的代码写法:
a、
string id4 = Request["name4"];
string website4 = Request["website4"];
Response.Write(id4 + "< br>" + website4);
b、
string id3 = Request.Params["name3"];
string website3 = Request.Params["website3"];
Response.Write(id3 + "< br>" + website3);
3、Session
a、Session提供了一种把信息保存在服务器内存中的方式。他能储存任何数据类型,包含自定义对象
b、每个客户端的Seesion是独立存储的。
c、当会话终止,或过期时,服务器就清除Session对象。
d、Session常用于保存登录用户的ID.
e、Session保存的数据是跨页面全局型的。
f、Session将一个ID存放在客户端做为与服务端验证的标记,而真正的数据都是放在服务端的内存之中的
<head runat="server"> <title></title> <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript"> function getSessionClick(action) { //这个函数是为了知道哪一个提交按钮被点击 $("#hidlgc").val(""); //清空隐藏值 $("#hidlgc").val(action); //给隐藏控件赋值 } </script> </head> <body> <form id="form1" method="post" action="MySession.aspx"> <table> <tr> <td>账号:</td><td><input type="text" name="txtUid" /></td>` </tr> <tr> <td>密码:</td><td><input type="password" name="txtPwd" /></td> </tr> <tr> <td colspan="2"> <input type="hidden" value="" id="hidlgc" name="hidlgclick" /> <input onclick="getSessionClick('lgclick')" type="submit" value="登录" /> <input type="submit" onclick="getSessionClick('getSession')" value="获取session" /> <input type="submit" onclick="getSessionClick('backLg')" value="退出登录" /> </td> </tr> </table> </form> </body>
protected void Page_Load(object sender, EventArgs e)
{
//把用户id写入session中
if (Request.Form["hidlgclick"] == "lgclick")
{
if(Request.Form["txtUid"].ToString()=="admin"&&Request.Form["txtPwd"].ToString()=="admin") //判断用户登录
{
Session["userName"] = Request.Form["txtUid"].ToString(); //把用户id保存到session中
Response.Write(Session["userName"].ToString()+"---点击登录"); //获取session,并写入页面
}
}
//获取Session
if (Request.Form["hidlgclick"] == "getSession")
{
if (Session["userName"] != null)
{
Response.Write(Session["userName"].ToString() + "---点击获取session"); //获取session,并写入页面
}
}
//取消当前会话,相当于注销(退出登录)。
if (Request.Form["hidlgclick"] == "backLg")
{
Session.Abandon();
}
}
<system.web> <sessionState timeout="40"></sessionState> <!---设置session的过期时间,时间以分钟为单位-->
注:
Session基本操作
a、创建Session
public void createSession(string[] arrStr) { //创建数组 string[] str=new string[arrStr.Length]; for (int i = 0; i < arrStr.Length; i++) { str[i] = i.ToString(); Session[str[i]] = arrStr[i]; } }
b、获取Session的值
string getSessionValue=Session["name"].ToString();
c、遍历Session
public void getSession() { IEnumerator sessionEnum = Session.Keys.GetEnumerator(); while (sessionEnum.MoveNext()) { Response.Write(Session[sessionEnum.Current.ToString()].ToString()+";"); } }
d、清空Session,但不结束会话
public void clearSession() { Session.Clear(); }
e、结束Session会话
public void abandonSession()
{
Session.Abandon();
}
4、Cookie