我在頁面的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