ASP.NET页面之间传值的几种方式

大致概括一下,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


         

   
原文地址:https://www.cnblogs.com/1955/p/7494545.html