2009-06-15 27 views
2

最近我發佈了一個問題的答案,我認爲這是一個很容易的問題,問題是關於asp.net中的頁面生命週期的問題,其中項目只會反映更改第一回發後取得的,所以我建議使用Response.Redirect壞種子或只是誤解

Response.Redirect(Request.RawUrl) 

,並幾乎立刻得到了投票否決了這個爲(爲什麼會導致另一個往返)

好吧,我想你的建議,是這種類型的東西好做法,簡單實用或永遠不要使用,請以一點動機支持我不時做的事情現在問題是否應該重新考慮。

這是原帖 Dynamically Change User Control in ASP.Net

+1

我想 - 在前面的問題和這一個 - 你有你的答案。如果實際上不需要重定向,則不應使用R.R(由於資源考慮和誤導性意圖)。基於會話的解決方案Joel呈現或直接從Request中拉出,既能方便地解決原始問題。 (JS解決方案也可以,但ASP.NET並不能很好地發揮它的作用) – annakata 2009-06-15 09:00:14

回答

3

沒有什麼內在的錯誤Reponse.Redirect,只是它不是在那種情況所需的大多數情況下。您可以通過使用生命週期而不是反對它來更改頁面的構建方式。那麼應該不需要另一個回傳。

+0

我認爲第一個陳述應該更強硬一點:非常重要的是沒有用於重定向的Response.Redirect。我不認爲這是一種更好的技術,因爲它確實是完全錯誤的。 – annakata 2009-06-15 07:58:05

1

ASP.Net頁面生命週期提供了很多機會介入和設置,所以我沒有看到有必要使用Response.Redirect來使客戶端加載頁面兩次。另外,僅使用一個參數使用Response.Redirect可能會拋出ThreadAbortException,所以通常最好使用第二個參數設置爲false的過載Response.Redirect(string url, bool endResponse)。這絕對適用於ASP.Net 1.0和1.1(請參閱here),不確定約2.0。

0

這似乎是巧合編程,但很多的ASP.net是。

1

另一種解決方案是使用帶有AutoPostBack DropDownList的UpdatePanel來切換用戶控件,然後只負責切換用戶控件,當主提交按鈕(或其他事件)回發整個表單時,你可以處理所有的數據。

UpdatePanels會更新本地頁面ViewState,如果您正確執行此操作。

相關問題