未调用母版页面加载

时间:2013-01-10 17:06:50

标签: asp.net master-pages

 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 个答案:

答案 0 :(得分:2)

为了调用Page_Load,请确保在MasterPage.aspx中有AutoEventWireup =“true”:

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

确保MasterPage.aspx Inherits属性与您的代码隐藏命名空间和类名以及.designer.cs命名空间和类匹配。

如果aspx和代码隐藏文件都正确连接,那么你应该能够删除FindControl语句。

答案 1 :(得分: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”,它有一个有用的辅助方法,可用于递归搜索控件。