Вопрос

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

Почему я должен предпочитать одно другому?

Состояние просмотра

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

Скрытое поле

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Джомит

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

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

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

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top