2012-10-15 57 views
2

我,每次我打F5再現了穩定的錯誤: Error無效ViewState的錯誤時EnabledEventValidation是

有2個網格(主 - 詳細信息)和錯誤實際發生的回調當主網格發生焦點行更改事件時,由我的客戶代碼引發。事情是這樣的:

this.mainGrid.ClientSideEvents.FocusedRowChanged = string.Format(@" 
       function(s, e) 
       {{ 
         if (typeof({0}) != 'undefined') 
          {0}.PerformCallback(s.GetFocusedRowIndex()); 
       }}", 
       this.detailsGrid.ClientInstanceName); 

的錯誤只再現了Mozilla Firefox瀏覽器! (是的,IE沒有受到質疑,這是有點怪=))

而且很重要的東西:錯誤,只有當事件驗證是再現,那就是:

... EnableEventValidation="false" %> // no error in this case 

我建議原因是得到加載必要的字段前的回調被炒魷魚(因爲我得到它,事件驗證使用一些隱藏字段),所以我檢查,使用setTimeout

this.mainGrid.ClientSideEvents.FocusedRowChanged = string.Format(@" 
      function(s, e) 
      {{ 
       window.setTimeout(function() {{ 
        if (typeof({0}) != 'undefined') {0}.PerformCallback(s.GetFocusedRowIndex()); 
       }}, 2000); 
      }}", 
      this.detailsGrid.ClientInstanceName); 

但是TAT沒有幫助。 2秒通過,回調開始,我收到錯誤。 它僅在刷新時發生 - 第一次加載頁面時不會引發錯誤。 禁用行緩存的網格也沒有幫助。 需要幫助! =))

編輯:這裏的堆棧跟蹤

at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 
    at System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded() 
    at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) 
    at System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) 
    at System.Web.UI.WebControls.HiddenField.LoadPostData(String postDataKey, NameValueCollection postCollection) 
    at System.Web.UI.WebControls.HiddenField.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) 
    at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest() 
    at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
    at System.Web.UI.Page.ProcessRequest(HttpContext context) 
    at ASP.solutions_cashcenter_stockmanagement_frames_takeintostorageordersviewframe_aspx.ProcessRequest(HttpContext context) in c:\Users\udod\AppData\Local\Temp\Temporary ASP.NET Files\website\b07be668\e534e3ef\App_Web_jeqyhxze.10.cs:line 0 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

EDIT2: 'EnsureEventValidationFieldLoaded' - 是的,我看到了這一點,但是......怎麼可能,如果我等待2秒鐘就不會被加載???編輯3:您可能會注意到這不是IIS問題(屏幕截圖上的127.0.0.1 ip)。

編輯:UP !!!

回答

5

昨天我碰到了同樣的錯誤,在這裏發現了一個類似的問題:http://sietch.net/ViewNewsItem.aspx?NewsItemID=185

我目前的解決辦法是:

$(document).ready(function(){ 
    $('#__EVENTVALIDATION').attr('autocomplete', 'off'); 
}); 

它似乎工作。但即時通訊仍在測試。

+0

男人,非常感謝你!我甚至都不知道你是怎麼找到這個的(我的意思是這篇文章),因爲我一直在尋找web解決方案,整天都沒有結果)但是這真的是firefox自動填充隱藏輸入的原因。再次謝謝你! –

+0

Idk如果我可以手動獎勵答案,但我會明天嘗試。 –