道歉,如果这太微不足道了,但我似乎遇到了无法从嵌套母版页访问对象的问题。
我无法将User对象从主master传递给嵌套的master。当它到达我的嵌套母版页时,它为空。我永远不会记得在掌握母版页面时遇到麻烦,但在这种情况下它只是不想工作。
所以设置,有些代码省略:
public partial class RWCMSMain : System.Web.UI.MasterPage
{
public Business.BusinessEntities.User LoggedOnUser { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
//Get the user
var loggedOnUser = userRepo.GetUser(securityToken);
//Now set the property
this.LoggedOnUser = loggedOnUser;
}
}
如果我要从继承主要主页的内容页面访问它,那么一切都很棒,但我们的想法是拥有一个包含侧栏的母版页。
现在我的side.master继承自主要主人:
public partial class RWCMSSide : System.Web.UI.MasterPage
{
//Create property for nested master
public Business.BusinessEntities.User LoggedOnUser { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
//Assign main masters user to the new property
//Master.LoggedOnUser is always null
this.LoggedOnUser = Master.LoggedOnUser;
}
}
您可能会争辩说我可以在嵌套母版页上重新创建用户,但是当它可以作为一个页面完成时,它会为数据库创建两个匹配。
虽然调试主要用户存在,但它不会被传递下去。
任何指针都将非常感谢!
此致
答案 0 :(得分:0)
主人Load
被执行after孩子的Load
:
- ...
- 母版页初始化事件。
- 内容页面初始化事件。
- 内容页面加载事件。
- 母版页加载事件。
- 主页面控制加载事件。
- ...
这就是该属性为空的原因。
1。您可以在Init
事件 - protected void Page_Load(object sender, EventArgs e)...
中设置它,如果它不依赖于正在加载的页面(可能是这样)。
2. 或者您可以将该属性转换为惰性属性(如果不是(并且可能不应该)用于多线程,则不需要实际的Lazy<T>
代码):
public partial class RWCMSMain : System.Web.UI.MasterPage
{
private Business.BusinessEntities.User m_LoggedOnUse;
public Business.BusinessEntities.User LoggedOnUser
{
get
{
if (this.m_LoggedOnUse == null)
this.m_LoggedOnUse = userRepo.GetUser(securityToken);
return this.m_LoggedOnUse;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}