2012-11-30 17 views
3

在此示例代碼中,在Web表單的Page_Load子例程中總是使用.IsPostBack是否爲「最佳實踐」?在Page_Load子例程中使用.IsPostBack

我希望可以問這個問題。如果不是,我會立即刪除這個問題。

基本上我想編碼你們大多數人的編碼方式。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    If Not Page.IsPostBack Then 

     ' More coding will go here. 
     '-------------------------- 
    End If 

請給它的利弊。

回答

6

這不是「最佳實踐」的情況,而是更多的是否需要使用它的情況。

這是真的,你通常會放IsPostBackPage_Load,雖然你也可以把它放在Page_Init - 基本上在任何渲染出HTML之前觸發頁面事件。

你基本上使用的命令,在這種情況下,防止正文中的代碼發射時,頁面回發給自己;如服務器控件上的表單提交或AutoPostBack,例如DropDownList

沒有任何東西,至少我可以想到,親和的。它是一種需要或不需要的情況。

當你理想地需要它時,只希望從數據庫中獲取一次數據並將其綁定到DropDownList。當您回發時,這些數據將在視圖狀態中可用。所以你不需要在回發時再次訪問數據庫。

如果您生成的服務器控件(例如按鈕)具有事件處理函數(例如click),則不會同時添加代碼。這需要在回發時重新生成,以使事件處理程序可用。

+0

+1的需求或沒有。 – webNoob

+0

感謝您的回覆! :-) –

+0

不客氣。用一些例子來豐富我的內容。 – Darren

3

好處是您可以只進行一次昂貴的操作。綁定到gridView ...等。

大多數你不想在刷新過程中執行的操作。

0

它總是取決於你想要優化。如果您的初始化代碼需要很長時間,最好只在第一次時完成,並讓您的控件通過ViewState進行初始化。然後你使用If Not IsPostBack

但是,如果您的目標移動設備的帶寬更重要,您可以關閉ViewState並在回發時重新初始化您的數據(您可以從緩存或SessionState中讀取數據)。總是看着你的ViewState,我看過20 kBy ViewState或更多的頁面。

優點:

  • 初始化較少的開銷(例如訪問數據庫)上的服務器
  • 較少的內存(會話或緩存)

魂鬥羅:

  • 更高的帶寬爲ViewState的