【问题标题】:How to pass information between web forms in asp.net如何在asp.net中的Web表单之间传递信息
【发布时间】:2014-01-01 06:02:34
【问题描述】:

如何将一些信息从一个 web 表单发送到 asp.net 中的另一个 web 表单 第一个 Web 表单是 HumanList.aspx,它在 GridView 组件中显示人员列表。 当用户单击编辑链接时,我想将人类 ID(人类记录 ID 的值)从 HumanList.aspx 传递到另一个名为 HumanEdit.aspx 的 Web 表单。 在humanEdit.aspx 中,我想加载那个人(使用humanID)并将人的信息填充到文本框中。

【问题讨论】:

  • 通常,queryString 用于此,而不是 Session。

标签: c# asp.net webforms


【解决方案1】:

页面之间传递参数的方法有很多。

  1. 使用Querystring

源页面 - Response.Redirect("second.aspx?param=value");

目标页面 - Request.QueryString["param"]

  1. 使用Session

源页面 - Session["param"] = "value"; 值在此处设置。

目标页面 - Session["param"].ToString()。值在此处检索。

  1. 使用PreviousPage 属性。注意:这适用于从 first.aspx(此处只是一个示例)重定向到 second.aspx 的情况,然后您可以使用 second.aspx 中的 PreviousPage.<propname>first.aspx 中设置的值。

second.aspx 中,您需要添加类似<%@ PreviousPageType VirtualPath="~/first.aspx" %> 的指令。

  1. 使用Request.Form 读取发布的值。

如果源页面中存在inputdropdownlist,并且您正在将值发布到second.aspx,那么您可以使用Request.Form["input_id"]读取发布的值。

  1. 使用cookies 传输值。首先从first.aspx 将一些值保存到cookie 中,然后从second.aspx 读取该值。

有关更多信息,请参阅 MSDN -MSDN link

【讨论】:

    【解决方案2】:

    考虑使用会话或查询字符串。

    会话可以像这样使用

    传值

     Session["value"]=someValue;
    

    得到类似的值

     var value= Session["value"].toString();
    

    你也可以借助属性传递值

    【讨论】:

      【解决方案3】:

      我建议将其存储在会话状态中:http://msdn.microsoft.com/en-us/library/ms178581.aspx

      【讨论】:

        【解决方案4】:

        嗯,有很多方法可以在页面之间传递信息。

        一种主要方式是通过QueryString

        //To Send
        private void submit_Click(object sender, System.EventArgs e)
        {
            string ID = String.Empty;
        
            ID = "192" // Have your ID Here
        
            Response.Redirect("humanEdit.aspx?ID=" + ID );
        }
        
        
        //To Receive
        private void Page_Load(object sender, System.EventArgs e)
        {
           String ID = String.Empty;
           ID=Request.QueryString["name"];
        }
        

        另一种方法是会话

        //Store your ID from Sending Page
        Session["ID"]= "143"; //Example ID
        
        //To Recieve
        private void Page_Load(object sender, System.EventArgs e)
        {
           String ID = String.Empty;
           ID=Session["ID"].toString();
        }
        

        还有很多其他的方法......

        【讨论】:

        • Negative Voters 可以解释为什么这个答案被否决了吗?
        • ID=Request.QueryString["name"];ID=Request.QueryString["ID"]; ?
        【解决方案5】:

        说你有一个带有按钮字段的 gridview1 说“修改” 首先为该字段提供命令名称说“Mod” 现在在 HumanList.aspx 页面的 Gridview1_RowCommand() 函数中编写如下代码-

        switch (e.CommandName.Trim())
        {
        case "Mod":
        int r1=Int32.Parse((e.CommandArgument).ToString());
        Session["id"]=GridView1.DataKeys[r1].Value.ToString();
        Response.Redirect("HumanEdit.aspx?id=" + Session["id"]);
        break;
        }
        

        现在在 HumanEdit.aspx.cs 中,您可以创建自己的类,并且在该类中您可以拥有一个数据表对象。将 Sql 查询存储在该对象中并在 page_load() 中调用该类。 说类是

        Public void show()
        {
        Within datatable object you can write your query like this
        select x,y,z, from tbl_name where id=" + Request.QueryString["id"]
        if(dt.Rows.Count>0)
        {
        Xtext.Text=dt.Rows[0]["x"].ToString();
        Ytext.Text=dt.Rows[0]["y"].ToString();
        Ztext.Text=dt.Rows[0]["z"].ToString();
        }
        }
        

        这么多的代码足以得到你想要的。

        【讨论】:

        • @user3150674:您好,如果您觉得您从帖子中得到了帮助,请将其标记为答案。谢谢。随时提出您的问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2016-04-17
        • 1970-01-01
        • 2011-01-17
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多