ViewState или HiddenField - PullRequest
       14

ViewState или HiddenField

7 голосов
/ 08 января 2009

Если у меня есть простой фрагмент данных для хранения (например, целое число или строка), я могу выбрать сохранить его в ViewState или с помощью элемента управления HiddenField.

Зачем мне выбирать одно из другого?

ViewState

  • Трудно пользователю декодировать (считалось невозможным), что может быть желательным

1011 * скрытый *

  • Значение может быть использовано в JavaScript

Есть ли другие плюсы и минусы?

Ответы [ 5 ]

6 голосов
/ 08 января 2009

Не совсем, ViewState на самом деле хранится в скрытом поле, поэтому единственное реальное отличие - это кодировка.

Если вам не нужно манипулировать значением с помощью JavaScript или вы не собираетесь вообще отключить ViewState на этой странице, тогда я бы использовал ViewState. В основном только потому, что существуют сторонние инструменты (, подобные этому ), которые понимают ViewState и не понимают ваше скрытое поле.

3 голосов
/ 08 января 2009

С точки зрения удобства обслуживания я бы использовал ViewState. Вы пишете меньше кода, что приводит к меньшему количеству точек отказа в вашем программном обеспечении. Это также означает, что всем разработчикам, которые придут за вами, будет проще поддерживать ваше решение.

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

0 голосов
/ 02 мая 2012

Скрытые поля невидимы на странице, и их значения можно просматривать в источнике представления, но значения состояния представления кодируются и не читаются.

Значение скрытого поля размещено на следующей странице. (Примечание: используйте server.transfer, чтобы получить значение скрытых полей).

0 голосов
/ 17 января 2011

Viewstate подходит только для той страницы, на которой вы находитесь или отправляете сообщения. С помощью скрытого поля вы можете получить доступ к данным на следующей странице, к которой вы переходите (а также к другим данным), используя метод PreviousPage объекта Page, например:

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
0 голосов
/ 08 января 2009

ViewState хранится на самой странице, поэтому он увеличивает размер страницы и может вызвать проблемы с производительностью .

Также мы можем настроить приложение для сохранения состояния просмотра на сервере , а не на самой странице, что может защитить от некоторых проблем безопасности.

Jomit

...