Ответ 1
Теоретический ответ
ViewState - одна из концепций ASP.NET WebForms, которая считается ОЧЕНЬ вредной. Он используется для хранения состояния некоторых элементов управления и делает очень-очень уродливое скрытое поле в HTML.
Это нежелательно для некоторых людей для SEO (поисковая оптимизация) и других причин.
MVC не предоставляет некоторые абстракции, которые делают WebForms по некоторым основным причинам:
- Он дает вам полный контроль над вашими URL-адресами и выводить HTML
- Элементы управления WebForms (особенно "продвинутые" ) делают нежелательный HTML, MVC позволяет писать собственный HTML
- Чтобы избежать этих сбоев, MVC не использует принцип управления, событий и т.д.
- Если вы хотите, чтобы ваша веб-инфраструктура абстрагировалась от истинного способа HTTP, вы должны продолжать использовать WebForms
По правде говоря, HTTP - это протокол безстоящий, который WebForms пытается скрыть от вас, введя концепцию Controls, а также их состояние и события.
MVC не лжет вам и не пытается ничего скрывать от вас.
Практический анкер
Вы можете использовать ViewData
вместо ViewState
.
Вы устанавливаете элемент (ViewData["Something"] = yourObject
) в Controller
, а затем можете получить его в View
. Вы можете использовать его, чтобы "запомнить" все, что вы хотите.
Итак, в основном, сохраняющаяся информация состоит в том, что она читает ее из Request.QueryString
или Request.Form
в соответствующем действии Controller
, устанавливая ее в ViewData
, а затем извлекает информацию ViewData
в View
.
Например:
Действие контроллера:
string textBoxValue = Request.Form["myTextBox"];
...
ViewData["myTextBox"] = textBoxValue;
Вид:
<% using (Html.BeginForm()) { %>
<%= Html.TextBox("myTextBox") %>
<% } %>
Другие материалы
Ознакомьтесь с некоторыми связанными с MVC вопросами (например, этот) и прочитайте книгу MVC (по крайней мере, о бесплатной главе NerdDinner).
MVC будет намного понятнее для вас, я обещаю!