理清asp.net页面跳转和页面传值问题

虽然这个东西很基本,但是自己有时候还是很混乱,所以今天就小小的整理了下。

先给大家带来的是页面的跳转问题

以下是四种 打开新页面的方法.

1. 直接转向新页面,原页面不保留

Response.Redirect("Webform6.aspx?);

2. 直接转向新页面,原页面不保留

nServer.Transfer("Webform6.aspx?,true);

3. 打开新页面,原页面保留,但是两个页面都可以操作.

nResponse.Write("<script>window.open('Webform6.aspx?,'_blank','');</script>");

4. 打开新页面,原页面保留,但只有子页面可以操作.只有关闭了子页面,父页页才能操作.

string s="<script language='javascript'>window.showModalDialog(\"Webform6.aspx?aa="+System.DateTime.Now.ToLongTimeString()+"\",\"newwin\",\"dialogHeight: 610px; dialogWidth: 850px; dialogTop: 128px; dialogLeft: 170px; edge: Raised; center: Yes; help: no; resizable: Yes; status: no;dialogtitle:no\"); window.location.href=window.location.href;</script>";

if(!IsStartupScriptRegistered("starup"))

{

RegisterStartupScript("starup",s);

}

接下来是带来的不同页面间传值的问题

1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则可以跳到其它虚拟目录指定的页面,十分灵活;

2. Server.Transfer可以将页面参数方便传递到指定页面;使用一个状态比如:

Server.Transfer(“WebForm2.aspx”, True),

现存的请求字符串和所有的Form里的变量将被保持并提交到你的目标页。传递的值只能在PAGELOAD函数里第一次进来时读出.

例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,

发送: Server.Transfer("Webform6.aspx",true);

接收: TextBox7.Text= Request.Form["TextBox1"] ;

3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;

4. Server.Transfer可以减少客户端对服务器的请求