2010-04-03 31 views
1

在asp.net中,存在Response.Redirect()的兩種重載方法。我應該如何在asp.net中編寫Response.Redirect()

  1. 公用Sub重定向(_網址作爲字符串)

  2. 公用Sub重定向(_網址作爲字符串_ endResponse由於布爾_)

我想了解這兩者之間的區別?我應該使用哪一個?

+1

您是否嘗試過微軟的文檔? http://msdn.microsoft.com/en-us/library/08za4s98(v=VS.71).aspx – Lazarus 2010-04-03 09:51:16

回答

1

第一個重載重定向到另一個URL,第二個允許你說當前的代碼是否應該繼續執行,例如,如果Response.Redirect("http://philippursglove.com", True)發生在代碼塊的中間,那麼代碼塊的其餘部分將繼續執行並運行數據庫更新或其他內容。至於你應該使用哪一個,我們不能在沒有看到它的情況下告訴你更多的代碼。

也看看Server.Transfer,它實現了與Response.Redirect幾乎相同的事情,但沒有發送任何東西給瀏覽器,這會給Web服務器帶來一點壓力。請參閱Server.Transfer vs Response.Redirect

+0

建議編輯指出,「[傳遞true將立即終止執行,傳遞虛假允許線程完成了](http://stackoverflow.com/edit-suggestions/4197)」 – 2011-02-10 15:30:07

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; 

小心雖然如果在試用中使用這個。有點怪異意味着在下一個例子中a將是2!

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