关于跨页传值的总结

关于跨页面获取值的方法目前个人用的最多有以下几种方法
1. 使用浏览器以编程方式重定向或者超链接
default.aspx页面
response.redirect("default1.aspx?id=1&name='luca'");
default1.aspx
string name=request.querystring("name");
超链接就是 HyperLink 控件或<a>传值方式和上面相同
个人心得
    注:不能传敏感数据

2. 使用会话状态
session["name"]="luca";
string name=session["name"].toString();
个人心得
占用内存,性能有所下降

3 通过跨页发送
直接读取源页的控件值
源页
default.aspx
在Button控件中有个poseBaskUrl写上Default2.aspx
1.定义属性
public string Cardname
{
 get{return Textbox1.text;}
}
目标页
default2.aspx
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>

  Response.Write(PreviousPage.Cardname);

或者直接访问源页的控件
    if (Page.PreviousPage != null)
        {
            if ((TextBox)Page.PreviousPage.FindControl("TextBox1") != null)
            {
                Response.Write((Page.PreviousPage.FindControl("TextBox1") as TextBox).Text);
            }


        }
3 服务器上以编程方式重定向
server.Transfer("Default2.aspx");
获取值与上面相同
而且由于它是直接从服务器上定向,所以浏览器上地址框在执行传输后不会发生变化,而是继续显示最近请求的页(通常为源页)的 URL
对想要隐藏的地址是最好的方法

注:response.redirect 和 HyperLink 是不能通过PreviousPage 找到源页值得因为它们的请求是HTTP GET 命令~所以不会把源页的信息发送过去
而posetbackurl的请求是HTTP Post把源页的信息发送过去了~还有一点需要注意以posetbackurl发送到目标页虽然它是一个回发但不是目标页本身的回发所以IspostBack是false,而你要区别是否是源页发送过来的信息的话用IsCrossPagePostBack=true

posted @ 2007-06-14 09:25  思然  阅读(389)  评论(0编辑  收藏  举报