我在页面的viewstate中存储了一个对象。现在,当我访问usercontrol上的相同视图对象时,它显示为空。我甚至尝试在usercontrol和page中使用相同的名称创建相同的viewstate。两者具有不同的值。为什么我无法访问usercontrol中的页面viewstate?
我知道viewstate是一个受保护的属性。这个东西是如何在上面的scenerio中实现的,或者是否有任何其他原因导致这种行为。
编辑:
用户控件存在于页面的标记。我没有动态加载它。
我有一个页面EditFacilityworkType.aspx。在页面上我有一个用户控件FacilityWorkTypeDetails.aspx(FacilityWorkTypeDetails1)。在这个usercontrol里面我有一个用户控件Workflow.aspx(Workflow1)
Page_Load()of Page 我正在检索页面page_load()上的workflowdetails。
FacilityWorktype facilityWorkType = facilityDetails.GetFacilityWorktypeDetail(SessionHelper.FacilityWorkTypeID);
ViewState["WorkFlow"] = facilityWorkType.FacilityWorkTypeWorkFlow
Inside usercontrol 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(Facility Worktype值) {
Workflow1.WorkFlowDetails = value.FacilityWorkTypeWorkFlow;
}
现在,当我从
private WorkFlow GetEntityFromControls()
{
WorkFlow workFlow = (ViewState["WorkFlow"] as WorkFlow) ?? new WorkFlow();
//workFlow is null
}
检索值那么现在这个函数内部工作流程为空。我想问,为什么当我在页面中设置viewstate时为空。
如何(或其中;后面的代码)你“在视图状态页面上存储的对象”?如果你需要存储“某处”“某处”以便稍后从“其他地方”检索它,那么你似乎在寻找会话功能而不是视图状态......而且你不能“创建相同的视图状态”:你是什么意思; viewstate由ASP.NET自动维护(创建等)?我认为你在这里混合了一些东西(最可能是视图状态和会话)。如果你描述你正在努力达到的目标,这可能会有所帮助。 – scherand 2010-06-11 08:22:55
您是否检查您的页面或web.config中的enableviewstate是否设置为false? – mamoo 2010-06-11 08:24:15
我还没有完全理解你想要达到的目标。 **但我想我可以回答你为什么'workFlow'为null **的问题。 “问题”是'GetEntityFromControls()'在“Workflow.aspx”内部(而不是'Workflow.ascx'可能?)。所以你访问的'ViewState'对象不是'Page'中的一个。所以严格来说,'ViewState [“WorkFlow”]'不是空的,但没有定义/可用(在'ViewState'对象中没有称为“WorkFlow”的条目,因为没有人在其中放置过)。 – scherand 2010-06-11 09:10:31