2010-02-16 102 views
2

我的工作,我繼承(ASP.NET和C#)在網站上,我注意到的是,在該項目的頁面背後的代碼幾乎每個方法(除了一些輔助方法)原作者使用Response.Redirect()重定向到一個頁面(通常是home.aspx,但並非總是)。在C#中使用Response.Redirect的

這樣做的目的是什麼?對我來說這似乎不需要 - 至少它不會改變網站正在做的任何事情,如果我保留或刪除它。

謝謝。

+0

從您發佈的內容看似不正確,但我們可能需要了解更多信息。 – ChadT 2010-02-16 23:44:36

+0

通常Response.Redirect的原因和HTTP重定向http://en.wikipedia.org/wiki/HTTP_302 – ziya 2010-02-16 23:47:09

回答

4

Response.Redirect()發出302 HTTP重定向頭添加到瀏覽器,這會導致瀏覽器從您的網站申請一個新的頁面。

如果作者使用POST-Redirect-GET模式來阻止用戶能夠點擊「刷新」按鈕並重新發布表單的問題,這也許可以解釋爲什麼在任何地方都可以使用它。

0

沒有更多信息,很難確定。

但是,如果home.aspx是一個空白頁面,則可能是原始作者可能試圖儘早終止頁面處理,以防止後續處理。

通常情況下,Response.Redirect()用來結束響應,並告知瀏覽器導航到一個新的一頁。但是,如果瀏覽器將該頁面緩存起來,它可能實際上不會執行到服務器的旅程。我見過一些情況,開發人員將此作爲短路後續處理的一種方式。

代碼也可能會做一些瘋狂的事情,比如使home.aspx成爲所有數據的主要顯示頁面 - 並使用會話狀態或緩存來跨頁面傳輸更改。可悲的是,我已經看到了這一點...... 感嘆。通常這是爲了處理用戶能夠多次提交表單。

+0

沒有,home.aspx頁面的主頁(這絕對不是空的 - 有點太滿,其實不過這是另一個問題)。 – JasCav 2010-02-16 23:49:30

0

重定向應該只在位置由代碼背後的某些東西決定時才能使用。重定向往往會導致ThreadAbortException異常,當一個簡單的href可能是醫生的命令時,這只是對系統的進一步需求。除非你可以定義一些真正的重定向架構需求,否則你可能只想開始逐步淘汰這些東西。

0

它向用戶代理/瀏覽器發送響應,並通知它重定向到指定的頁面。它可以放入任何代碼的一部分,但默認情況下,該網頁將仍然執行完畢,然後重定向響應將被設置爲客戶端...

它應該只在最後一點需要您正在運行(一般)

+0

在我看過的代碼中,Response.Redirects總是代碼的最後一部分(代碼隱藏內部方法的最後一行)。但是,很多時候,重定向會轉到我已經在的頁面。這讓我感到困惑。 – JasCav 2010-02-16 23:48:45

+0

這就對了!它應該「一般」是... Response.Redirect可以在任何點從內存中調用,並且重定向響應將在頁面完全渲染完成後發送到瀏覽器... 如果它們被重定向到當前頁面,那是令人困惑的! @ womp的想法可能是一個合理的猜測! – jwwishart 2010-02-17 00:03:45

0

ASP.NET頁會後回到自己的代碼,因此一些使用重定向方法打開了新的一頁。在需要時使用它。如果在刪除它時看不到區別。這可能是該網站使用鏈接從一個頁面導航到另一個頁面,而不是通過服務器進行導航。

相關問題