2012-02-15 71 views
0

我有一個問題要問關於Asp.Net母版頁。 在主頁和頁面加載事件我有像Asp.Net - 母版頁 - 如何避免不必要的調用

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    if (Session["UserName"] != null && Session["UserLastName"] != null) 
    { 
     lblDisplayName.Text = Session["UserName"].ToString() + " " + Session["UserLastName"].ToString() ; 
    } 
    } 
} 

Master頁面代碼被應用於第1頁和第2頁。 每當我從第1頁重定向到第2頁或第2頁到第1頁。它執行主頁的頁面加載。上面的代碼每次都執行。是不是可以只設置一次用戶名。

有什麼可以避免這些嗎?

謝謝, Mahesh。

+1

我認爲你高估了這3行代碼放在服務器上的負載量...... – 2012-02-15 13:57:40

+0

我不知道OP是否知道有多少代碼被執行,直到Page_Load以及另一個大「多」後。 – 2012-02-15 13:58:58

回答

0

ASP.NET是無狀態的,因爲HTTP協議是無狀態的;因此,頁面1中的主頁面實例對頁面2所做的請求一無所知。因此,每次頁面加載時都必須重新建立標籤。

如果您在詢問這方面的表現,我不會擔心每次都會設置標籤。性能最大的問題往往是:

  1. 在客戶端上花費很長時間下載的大頁面大小。
  2. 低效的數據庫查詢。
  3. 還有其他的,但這是另一個討論的話題。
+3

http協議是無狀態的 – 2012-02-15 13:59:57

+0

知道了 謝謝Brian Mains – 2012-02-15 14:26:07

0

HTTP是一種無狀態協議。

從一個頁面轉移到另一個頁面時,您正在丟失所有狀態信息。事實上,很多網絡開發中心在無狀態協議中提供了某種狀態。

我們通過從某個地方 - 餅乾或您的案例 - 會話中拉取值來實現此目的。

簡而言之,當你的頁面加載時,它對之前的頁面一無所知。因此,您需要每次檢查並設置用戶。