Извините, если это слишком тривиально, но у меня, похоже, возникает проблема, когда я не могу получить доступ к объекту из вложенной главной страницы.
У меня возникли проблемы с передачей объекта User с моего основного мастера на мой вложенный мастер. К моменту, когда она попадет на мою вложенную главную страницу, она будет равна нулю. Я никогда не помню, чтобы у меня были проблемы с переходом на главные страницы, но в этом случае он просто не хочет работать.
Итак, настроено, Некоторый код опущен:
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;
}
}
Вы можете утверждать, что я мог бы воссоздать пользователя на вложенной главной странице, но затем это создало бы два обращения к базе данных, когда это можно было бы сделать как одно.
При отладке главного мастера пользователь существует, он просто не передается.
Любые указатели будут очень благодарны!
С Уважением,
Магистральная Load
выполняется после Load
ребенка:
- ...
- Событие инициации главной страницы.
- Событие Init страницы содержимого.
- Содержимое страницы Загрузка события.
- Основная страница Загрузка события.
- Управление главной страницей.
- ...
Вот почему свойство равно null.
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)
{
}
}