2014-03-12 64 views
-3

我已經在網頁中在asp.net,爲什麼頁面的構造函數獲取調用兩次

public partial class TestPage : System.Web.UI.Pag 
    { 
     public TestPage() 
     { 
      // Session["x"] = 10; 
     } 
    } 

寫一個構造函數當我從vs2012在調試模式下運行應用程序時,獲取執行兩次構造。任何人都可以讓我知道爲什麼會這樣嗎?

編輯:這個分數-2是否被任何人設置?或者它是默認的一個?如果它是由某人設置的,想知道爲什麼?謝謝。

+2

設置斷點並查看調用堆棧。 – SLaks

+2

這是一個部分類,請向我們展示您的所有代碼,沒有模擬代碼。構造函數中發生了什麼? – Alexander

+0

@SLaks:除「外部代碼」外,在調用堆棧中沒有任何顯示。 –

回答

0

不完全確定什麼會導致構造函數在標準頁面執行/單個加載中被調用兩次。可能與page life cycle有關,ASP.Net創建Page變量並在執行期間使用它(或其倍數)的方式。

我相信你可能打算使用Page_Load事件(如頁面生命週期中提到的那樣),每頁加載只能執行一次。

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["x"] = 10; 
} 
+0

是的,頁面加載事件正在被激發一次..但我不知道,如果構造函數被調用,意味着頁面被實例化兩次。仍然在尋找答案..無論如何感謝您的回覆.. –

0

你不應該在你的構造函數中用Session做任何事情。爲什麼你甚至需要在網頁上使用構造函數。使用OnInit()來進行初始化。

protected override void OnInit(EventArgs e) 
+0

'@Rick S'..我沒有在構造函數中使用會話(它是註釋行)。什麼asp.net正在做兩個同一頁面的對象(否則爲什麼它會調用構造函數兩次)。 –

+0

您是否使用Response.Redirect訪問您的頁面? –

+0

不..這是我的默認頁面 –

相關問題