Я сохранил объект в viewstate на странице. Теперь, когда я получаю доступ к тому же объекту viewsate в usercontrol, он отображается как null Я даже пытался создать одно и то же состояние представления с одинаковым именем в usercontrol и page.Both имеет другое значение.
Я понимаю, что viewstate является защищенным свойством. Как это реализовано в описанном выше сценарии или есть какая-то другая причина для такого поведения?
Edit:
UserControl есть в разметке страницы. Я не загружаю его динамически.
У меня есть страница EditFacilityworkType.aspx. На странице у меня есть пользовательский контроль FacilityWorkTypeDetails.aspx (FacilityWorkTypeDetails1). Внутри этого usercontrol у меня есть пользовательский элемент управления Workflow.aspx (Workflow1)
Page_Load () страницы
Я получаю детали рабочего процесса на page_load () страницы.
FacilityWorktype facilityWorkType = facilityDetails.GetFacilityWorktypeDetail(SessionHelper.FacilityWorkTypeID);
ViewState["WorkFlow"] = facilityWorkType.FacilityWorkTypeWorkFlow
Внутри пользовательского контроля FacilityWorkTypeDetails.aspx. У меня есть собственность
public FacilityWorktype FacilityWorkTypeDetails
{
get
{
#region Fill FacilityWorktype
return GetEntityFromControl();
#endregion
}
set
{
PopulateControls(value);
}
}
Теперь я устанавливаю это свойство при загрузке страницы
FacilityWorkTypeDetails1.FacilityWorkTypeDetails = facilityWorkType;
Внутри Workflow.aspx, у меня есть свойство
/// <summary>
/// Property to fill entity object from controls on this page
/// </summary>
public WorkFlow WorkFlowDetails
{
get
{
return GetEntityFromControls();
}
set
{
BindTranscriptionMethodDDL(ddlTranscMethod);
PopulateControls(value);
}
}
Теперь PopulateControls () из FacilityWorkTypeDetails1, я устанавливаю свойство рабочего процесса1
private void PopulateControls (значение FacilityWorktype)
{
Workflow1.WorkFlowDetails = value.FacilityWorkTypeWorkFlow;
}
Теперь, когда я получаю значения из
private WorkFlow GetEntityFromControls()
{
WorkFlow workFlow = (ViewState["WorkFlow"] as WorkFlow) ?? new WorkFlow();
//workFlow is null
}
Так что теперь внутри этой функции workFlow равен нулю. Я хочу спросить, почему это ноль, когда я установил viewstate на странице.