3 回答
TA贡献1788条经验 获得超4个赞
有多种方法可以实现此目的。我可以向您简要介绍一下我们在日常编程生命周期中使用的4种类型。
请仔细阅读以下几点。
1查询字符串。
FirstForm.aspx.cs
Response.Redirect("SecondForm.aspx?Parameter=" + TextBox1.Text);
SecondForm.aspx.cs
TextBox1.Text = Request.QueryString["Parameter"].ToString();
当您传递整数类型的值或其他短参数时,这是最可靠的方法。如果在通过查询字符串传递值时在值中使用任何特殊字符,则此方法将更先进,必须在将值传递到下一页之前对其进行编码。因此,我们的代码段将如下所示:
FirstForm.aspx.cs
Response.Redirect("SecondForm.aspx?Parameter=" + Server.UrlEncode(TextBox1.Text));
SecondForm.aspx.cs
TextBox1.Text = Server.UrlDecode(Request.QueryString["Parameter"].ToString());
URL编码
Server.URLEncode
HttpServerUtility.UrlDecode
2.通过上下文对象传递值
通过上下文对象传递值是另一种广泛使用的方法。
FirstForm.aspx.cs
TextBox1.Text = this.Context.Items["Parameter"].ToString();
SecondForm.aspx.cs
this.Context.Items["Parameter"] = TextBox1.Text;
Server.Transfer("SecondForm.aspx", true);
请注意,我们使用Server.Transfer而不是Response.Redirect导航到另一个页面。我们中的某些人还使用Session对象来传递值。在该方法中,值存储在Session对象中,然后在第二页中从Session对象中拉出。
3.将表单过帐到其他页面而不是回发
通过将页面发布到另一种形式来传递价值的第三种方法。这是示例:
FirstForm.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
buttonSubmit.Attributes.Add("onclick", "return PostPage();");
}
我们创建了一个JavaScript函数来发布表单。
SecondForm.aspx.cs
function PostPage()
{
document.Form1.action = "SecondForm.aspx";
document.Form1.method = "POST";
document.Form1.submit();
}
TextBox1.Text = Request.Form["TextBox1"].ToString();
在这里,我们将表单发布到另一页而不是其自身。使用此方法,您可能在第二页中看到viewstate无效或错误。要解决这个错误就是EnableViewStateMac=false
4.另一种方法是通过添加控件的PostBackURL属性进行跨页回发
在ASP.NET 2.0中,Microsoft通过为跨页面回发添加控件的PostBackURL属性解决了此问题。实现只需设置控件的一个属性即可。
FirstForm.aspx.cs
<asp:Button id=buttonPassValue style=”Z-INDEX: 102″ runat=”server” Text=”Button” PostBackUrl=”~/SecondForm.aspx”></asp:Button>
SecondForm.aspx.cs
TextBox1.Text = Request.Form["TextBox1"].ToString();
在上面的示例中,我们为按钮分配了PostBackUrl属性,我们可以确定按钮将发布到的页面而不是页面本身。在下一页中,我们可以使用Request对象访问上一页的所有控件。
您也可以使用PreviousPage类来访问上一页的控件,而不是使用经典的Request对象。
SecondForm.aspx
TextBox textBoxTemp = (TextBox) PreviousPage.FindControl(“TextBox1″);
TextBox1.Text = textBoxTemp.Text;
您已经注意到,这也是在页面之间传递值的简单,干净的实现。
- 3 回答
- 0 关注
- 462 浏览
添加回答
举报