Я также обнаружил эту ошибку в asp.net mvc beta. Это может быть очень воспроизведено. После создания приложения asp.net mvc с использованием шаблона по умолчанию добавьте элемент управления asp: button на страницу home.aspx в режиме конструктора, нажмите клавишу f5, домашняя страница отображается правильно. нажмите на кнопку, эта ошибка появится. После некоторой отладки исходного кода mvc, я обнаружил, что это вызвано ViewUserControl на странице site.master, просто прокомментируйте <% Html.RenderPartial ("LoginUserControl"); %>, тогда событие щелчка может быть обработано правильно.
Я также обнаружил, что такие настройки, как enableViewStateMac = "false" enableEventValidation = "false" viewStateEncryptionMode = "Никогда", бесполезны.
В исходном коде mvc следующий раздел обрабатывает рендеринг ViewUserControl
публичная виртуальная пустота RenderView (ViewContext viewContext) {
// TODO: Remove this hack. Without it, the browser appears to always load cached output
viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now);
**ViewUserControlContainerPage containerPage = new ViewUserControlContainerPage(this);**
// Tracing requires Page IDs to be unique.
ID = Guid.NewGuid().ToString();
containerPage.RenderView(viewContext);
}
закрытый закрытый класс ViewUserControlContainerPage: ViewPage {
public ViewUserControlContainerPage(ViewUserControl userControl) {
Controls.Add(userControl);
}
}
ViewUserControl всегда отображается на вновь созданной странице контейнера, эта страница не выберет ваши настройки. Фактически, если перейти к этому разделу, вручную изменить параметр container.enableViewStateMac на false, это поможет устранить ошибку. Поэтому единственный способ решить эту проблему - попросить Microsoft изменить код mvc.