我应该如何在asp.net中编写Response.Redirect()

时间:2010-04-03 09:48:46

标签: asp.net

在asp.net中,存在两个Response.Redirect()的重载方法。

  
      
  1. 公共子重定向(_ url As String)

  2.   
  3. Public Sub Redirect(_ url As String,_ endResponse As Boolean _)

  4.   

我想知道这两者之间的差异吗?我应该使用哪一个?

2 个答案:

答案 0 :(得分:1)

第一个重载重定向到另一个URL,第二个重载允许您说明当前代码是否应继续执行,例如如果Response.Redirect("http://philippursglove.com", True)出现在代码块的中间,则代码块的其余部分将继续执行并运行数据库更新或其他任何内容。

至于你应该使用哪一个,我们无法在你的代码更多的情况下看到它。

另请参阅Server.Transfer,它与Response.Redirect完全相同,但没有向浏览器发送任何内容,这可能会给您的Web服务器带来一些压力。见Server.Transfer vs Response.Redirect

答案 1 :(得分:1)

他们都向您的浏览器发送302响应,告诉它请求指定的页面。如果您将某人重定向到新页面,通常不希望响应继续,因此默认情况下这是Response.Redirect(“/”)所做的。

如果您确实想要继续处理响应,则需要将第二个参数设置为false。

因此,在此示例中,a将为1:

var a = 1;
Response.Redirect("/aboutus.aspx");
a = 2;

在此示例中,a将为2,因为线程在重定向后继续运行。

var a = 1;
Response.Redirect("/aboutus.aspx", false);
a = 2;

小心但是如果在try catch中使用它。稍微有些奇怪意味着在下一个例子中a将是2!

var a = 1;
try
{
    Response.Redirect("/aboutus.aspx");
}
finally
{
    a = 2;
}