Недопустимая ошибка ViewState в Firefox при включенном EnabledEventValidation

У меня есть стабильная ошибка, которая воспроизводится каждый раз, когда я нажимаю F5:ошибка

Есть 2 сетки (master-detail), и на самом деле ошибка возникает при обратном вызове, который вызывается моим клиентским кодом, когда происходит изменение фокусированной строки в основной сетке. Что-то вроде этого:

    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);

Но Тат не помогла. Проходит 2 секунды, начинается обратный вызов, и я получаю сообщение об ошибке. Это происходит только при обновлении - при первой загрузке страницы ошибка не возникает. Отключение кеша строк для сетки также не помогло. Нужна помощь! знак равно

Изменить: вот StackTrace

   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 секунды???

Edit3: вы можете заметить, что это не проблема IIS (127.0.0.1 ip на скриншоте).

Редактировать: UP!!!

1 ответ

Решение

Вчера я столкнулся с той же ошибкой и обнаружил похожую проблему здесь: http://sietch.net/ViewNewsItem.aspx?NewsItemID=185

мой текущий обходной путь:

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

это похоже на работу. Но я все еще тестирую.

Другие вопросы по тегам