Понимание ViewState и FormData

Я только начал работать с ASP.NET MVC и внезапно спросил себя: зачем нужен ASP.NET? ViewState на первом месте? FormData на самом деле держит государство через постбэков. ViewState требуется только в том случае, если состояние элемента управления изменилось, и это изменение НЕ включено в FormData. Например, что если обработчик событий изменил цвет шрифта элемента управления?

Два вопроса:

  • Для веб-форм, это причина необходимости ViewState?
  • Если да, то как MVC может поддерживать свойство элемента управления, которое НЕ находится в FormData"?

2 ответа

Решение

MVC и WebForms очень разные в этом отношении. Смысл WebForms заключался в том, чтобы помочь разработчикам WinFroms облегчить процесс веб-разработки. По этой причине инфраструктура WebForms всегда имитирует состояние, когда это возможно. ViewState это один из способов, которым это реализовано. Поскольку браузер отправляет только поля формы назад, в WebForms вся страница представляет собой одну большую форму, и вся страница публикуется на сервере. ViewState скрытое поле, которое содержит все, НО данные на входах, выбирает и т. д., которые браузер публикует по умолчанию.

С другой стороны, MVC не пытается имитировать состояние. Работает более напрямую с HTTP и основные правила системы без гражданства. Поэтому, когда вы публикуете форму, публикуются ТОЛЬКО данные во входах, выборках и т. Д. Ничто иное не возвращается на сервер.

Вот почему, если вы хотите вернуть то же представление после публикации с обновленными данными, вам необходимо заполнить ViewModel с данными, как вы сделали в оригинальном методе get. MVC не заботится об этом, как WebForms.

Относительно того, почему View State стоит на первом месте, ваше объяснение связано. View State используется для сохранения состояния в Post Backs и главным образом для обработки обновленных программных свойств, например, страницы с меткой и кнопкой, и у вас есть обработчик события для кнопки, который меняет цвет передней панели на красный, при загрузке страницы элементы управления инициируют метку однако при использовании цвета по умолчанию при нажатии кнопки он меняет цвет метки на красный и сохраняет это изменение в состоянии просмотра, поэтому, если что-то сработало после публикации, то после загрузки элементов управления на странице загружается цвет переднего фронта к значению, уже сохраненному внутри ViewState

Для получения более подробной информации, пожалуйста, проверьте следующую ссылку http://msdn.microsoft.com/en-us/library/ms972976.aspx

MVC не имеет представления состояния, MVC основан на привязке модели, поэтому, когда форма публикуется, MVC-структура считывает параметры httprequest и пытается создать строго типизированный объект из этого запроса, и вы можете создать свой собственный механизм связывания, который сообщает MVC, как читать запрос http

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