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语句),我也找不到位于母版页中的标签
答案 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”,它有一个有用的辅助方法,可用于递归搜索控件。