在论坛上看到的,有三种办法,第一种是传统的get方法,在.net种稍微变化了下,用responst.redirect(url)来进行传递,用request.querystring来得到值。第2种是用session,但是要注意session用后要显示的消除,消除的格式是Server.remove("aaaa"),这里的aaaa是指session["aaaa"]中的aaaa,这个要注意,因为用多了SESSION是运行在服务器的,用多了对性能有影响。第3种方法是server.transfer(), 代码如下
public string Var1
{
get
{
return TextBox1.Text;
}
}
public string Var2
{
get
{
return TextBox2.Text;
}
}
// 然后调用Server.Transfer方法
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("webform1.aspx");
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Var1;
Label2.Text=wf1.Var2;
}
帮助文档上的话
Transfer 方法,在服务器上以编程方式重定向到目标页。在此情况下,服务器只是将当前源页的上下文传输给目标页。然后目标页呈现在源页的位置。源页和目标页必须位于同一 Web 应用程序中。与跨页发送一样,Transfer 方法也具有允许目标页从源页中读取控件值和公共属性值的优点。由于源页和目标页之间的传输在服务器上进行,浏览器没有任何关于更改后的页的信息,它仍保留有关原始(源)URL 的信息。例如,Internet Explorer 中的“地址”框在执行传输后不会发生变化,而是继续显示最近请求的页(通常为源页)的 URL。也不会更新浏览器的历史记录以反映传输过程。如果用户在浏览器中刷新页面或单击浏览器的“后退”按钮,这可能导致意外行为。因此,对于以隐藏 URL 的方式向用户呈现页面的应用程序而言,调用 Transfer 方法是一种最佳的策略。
注意
request对象实际上操作system.web 命名空间中的类httprequest。当客户发出请求执行asp.net时,CLR会将客户端请求信息包装在Request对象中。这些请求信息包括请求报头、客户端基本信息(浏览器信息、浏览器版本号、用户所用的语言、编码方式等)、请求方法(post、get)、参数名、参数值等。Request对象的调用方法为:
Request.collection[“variable”]
其中collection包括QueryStrin、Form、Cookies、ServerVariables四种集合,将Request.QueryString["var1"]写为Request["var1"]看起来也可以,但这样作其实不是一种好的方法,因为省掉collection选项后,Request会按照QueryString、Form、Cookies、ServerVariables的顺序进行搜索直到发现“variable”所指的关键字并返回其值,没有找到则返回(null)。因此为了提供程序的执行效率,最好还是指定collection,过多地搜索会影响程序执行的效率。