|
ASP.NET实现页面间值传递的几种方法(2) } } protected void Button1_Click(object sender, EventArgs e) { Server.Transfer("Default2.aspx"); }
receive.aspx:
send d = Context.Handler as send ; if (d != null) { Response.Write(d.Name);这样可以得到参数值。 }
如果在asp.net 2.0中还可以这样用:通过PreviousPage
PreviousPage d = Context.Handler as PreviousPage ; if (d != null) { Response.Write(d.Name);这样可以得到参数值。 }
也可以这样用:
send.aspx: <asp:Button ID="btnSubmit" runat="server" PostBackUrl="~/reveive.aspx" Text="Submit" /> receive.aspx: <%@ PreviousPageType VirtualPath="~/Default.aspx" %> string name = PreviousPage.Name;这样可以得到参数值。
如果你的页面中用到了MasterPage的话 Server.Transfer 传递的 PreviousPage就无效了,不知道这是什么原因.所以在用到MasterPage的话,最好用Session或是Context.Items["username"]来实现.
使用QueryString
使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下: 1,使用控件创建web表单(form) 2,创建可以返回表单的按钮和链接按钮 3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量 4,在保存的URL里添加QueryString参数 5,使用Response.Redirect重定向到上面保存的URL
下面的代码片断演示了如何实现这个方法:
源页面代码:
private void Button1_Click (object sender, System.EventArgs e) { string url; url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; Response.Redirect(url); }
目标页面代码:
private void Page_Load
|