2013-01-10 59 views
1
public partial class MasterPage : System.Web.UI.MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if(System.Web.HttpContext.Current.User.Identity.Name != "") //if (!Page.IsPostBack) 
      { 
       BusinessLayer.ShoppingCart cart = new BusinessLayer.ShoppingCart(); 
       int count = cart.getNoOfProducts(System.Web.HttpContext.Current.User.Identity.Name); 
       Label lblCart = (Label)Master.FindControl("lblCartNo"); 
       lblCart.Text = " (" + count + ")"; 
      } 
     } 
    } 

我把一個斷點,這些代碼不會被調用(即使沒有if語句),我也沒能找到它位於母版頁母版頁負荷不會被調用

回答

2

爲了被稱爲​​Page_Load中,請確保您的MasterPage.aspx有AutoEventWireup =「真」:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Mysite.Website.Templates.MasterPages.Site" %> 

確保MasterPage.aspx繼承屬性代碼隱藏匹配命名空間和類名稱,以及您的.designer.cs名稱空間和類。

如果aspx和代碼隱藏文件都連接正確,那麼您應該能夠刪除FindControl語句。

+0

感謝您的回覆,我剛剛意識到這是從我的母版頁丟失。但是我無法正確手動輸入。 – rikket

+0

我應該在Inherits =中輸入什麼內容? – rikket

+0

Inherits應包含完全限定的類名。轉到您的代碼隱藏的.cs文件。將該名稱空間與您的類名相結合,並將您的Inherits屬性設置爲該字符串。在我的例子中,命名空間是「Mysite.Website.Templates」,類名是「Site」。如果這看起來很混亂,那麼嘗試添加一個新的MasterPage並移動所有標記+代碼隱藏。 Visual Studio應該爲你正確地連接文件。 –

0

標籤您的母版頁的Page_Load事件肯定會觸發。不知道爲什麼你的斷點沒有被擊中,但仔細檢查,我會建議您嘗試一些更蠻力絕對保證,該方法是絕對不能被稱爲:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write("Page_Load"); 
    Response.End(); 
} 

你的標籤可能由於控件嵌套的方式不能找到,因爲如果控件駐留在另一個控件中,Master.FindControl將不起作用。我建議檢查「Finding controls inside of nested master pages」,它有一個有用的幫助方法,可用於遞歸搜索控件。