我的ViewState和F5頁面刷新的ASP.NET應用程序出現問題。F5頁面刷新後LoadViewState出現問題 - 無法加載視圖狀態
如果從一個頁面導航到另一個我馬上打F5後,我收到以下錯誤:
System.InvalidCastException
"Unable to cast object of type 'System.Web.UI.Triplet'
to type 'System.Web.UI.Pair'."
這導致頁面上顯示以下異常:
HttpException (0x80004005): Failed to load viewstate. The control tree
into which viewstate is being loaded must match the control tree that
was used to save viewstate during the previous request.
For example, when adding controls dynamically, the controls added during a
post-back must match the type and position of the controls added during
the initial request.]
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +310
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Page.LoadAllState() +439
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1092
點當它調用父LoadViewState時,它在失敗時是在自定義標籤控件的重載LoadViewState方法中
System.Web.UI.WebControls.Label.LoadViewState(ByVal savedState As Object)
savedState對象似乎是一個完全不同的控件(下拉列表),它是一個System.Web.UI.Triplet,而不是Label控件所期望的System.UI.Pair對象。
如果我在同一個應用程序中使用不同的頁面完全相同的事情,則頁面在F5回發之後加載正常。這兩個網頁從相同的基類繼承,並使用相同的自定義控件。導致問題的頁面沒有任何動態添加的控件。
調試完該進程後,它看起來好像加載成功的頁面上的控件的F5回發後,LoadViewState事件未被觸發。在兩種情況下都會觸發SaveViewState。
任何想法爲什麼LoadViewState事件會被觸發爲一個頁面,而不是其他?我對ASP.NET相當陌生,而且我仍然瞭解ViewState的工作原理。