将数据从一个页面发送到另一个页面

我正在尝试使用C#ASP.Net将表单数据从一个页面发送到另一个页面。 我有两个页面default.aspx和default2.aspx.Here是我在default.aspx中的代码:

 


据我所知,到目前为止,PostBackUrl用于设置您希望数据发送的页面是否正确?

另外,我如何检索发送到Default2.aspx的数据?

你有几个选择,考虑一下

  1. 会话状态
  2. 请求参数

会话状态

如果要在页面之间发送数据,可以考虑使用会话状态 。

ASP.NET会话状态使您能够在用户在Web应用程序中导航ASP.NET页面时存储和检索用户的值。 HTTP是无状态协议。 这意味着Web服务器将页面的每个HTTP请求视为独立请求。 服务器不保留先前请求期间使用的变量值的知识。 ASP.NET会话状态在有限时间窗口内将来自同一浏览器的请求标识为会话,并提供了在该会话期间持久保存变量值的方法。 默认情况下,为所有ASP.NET应用程序启用ASP.NET会话状态。

最重要的是,它很容易!

放入数据(例如在default1.aspx上)

 Session["FirstName"] = FirstNameTextBox.Text; Session["LastName"] = LastNameTextBox.Text; 

把它拿出来(例如在default2.aspx上)

 string firstname = Session["FirstName"] // value of FirstNameTextBox.Text; string lastname = Session["LastName"] // value of LastNameTextBox.Text; 

请求参数

如果要发送少量数据(例如id = 4),则使用查询字符串变量可能更实际。

您应该探索查询字符串变量的使用,例如

 http://www.domain.com?param1=data1&param2=data2 

然后,您可以将数据输出

 string param1 = Request.QueryString["param1"]; // value will be data1 string param2 = Request.QueryString["param2"]; // value will be data2 

您可以使用类似于如何测试Request.QueryString []变量的内容? 获取数据。

如果您不熟悉查询字符串变量,请查看他们的维基百科文章

会话变量在此上下文中很有用。

Foe示例假设您的文本框包含登录凭据,然后将它们保存在会话中,以便以后可以在任何其他页面中使用它们。 像这样:

在Button_Click-

 Session["name"]=TextBox1.Text; Session["pwd"]= TextBox2.Text; 

而不是PostBackUrl="~/Default2.aspx"你可以写下面 –

 //in button click Server.Transfer("~/Default2.aspx"); 

在Default2.aspx页面加载:

 string a= Session["name"].ToString(); string b= Session["pwd"].ToString(); 

在Default2.aspx的Page_Load中尝试此操作。

  if (PreviousPage != null) { if (((TextBox)PreviousPage.FindControl("TextBox1")) != null) { string txtBox1 = ((TextBox)PreviousPage.FindControl("TextBox1")).Text; Response.Write(txtBox1); } } 

是的,你是对的,如果你使用PostBackUrl属性,第1页的数据将被发送到第2页。

MSDN链接

虽然这里的所有答案都有效但有些并不是最有效的。 为什么简单/标准的http POST必须调用(昂贵的)服务器端Session

您的代码没有做任何特殊的事情 – 它只是将表单发布到另一个页面。 要获取POSTed数据,您需要做的就是通过Request.Form集合。

在设置PostBackUrl的可用性之前(如果内存服务于asp.net的第1版), Server.Transfer和获取对前一页的引用是如何完成/记录跨页POST。 然而,使用PostBackUrl ,事情又回归基础,它应该是 – 从一个资源到另一个资源的标准http POST

这是一个类似的SO线程 ,可能会有所帮助。