Что лучше всего использовать ViewState или hiddenfield
-
05-07-2019 - |
Вопрос
У меня есть страница, на которой я хочу сохранить значение object между обратными сообщениями.Я думаю о двух способах поддержания ценности объектов
- Сохраните значение в режиме просмотра
- Сохраните значение в скрытом поле
какой вариант лучше всего использовать в зависимости от производительности
Решение
Состояние просмотра, если вы не надо нужно сослаться на это в клиентском скрипте.Скрытое поле, если вы это сделаете.
Также учтите, что если данные конфиденциальны, Viewstate по умолчанию шифруется, тогда как скрытое поле по умолчанию сохраняет их в виде обычного текста, видимого любому, кто знает, как просмотреть исходный код.
Редактировать
Согласно примечанию @Andrew Hare к его собственному ответу, я редактирую это.Это достаточно важное различие, на которое следует обратить внимание.Мне бы не хотелось, чтобы кто-то думал, что они были "в безопасности", используя Viewstate, основываясь на моем недосмотре.
Состояние просмотра по умолчанию НЕ зашифровано, оно хранится в кодировке Base-64.Его можно довольно легко расшифровать, поэтому использование Viewstate, поскольку оно зашифровано по умолчанию, недопустимо.Это лучше, чем обычный текст, но не для тех, у кого есть возможность в Google "расшифровать Viewstate" или "декодировать Viewstate".
Поэтому не полагайтесь на Viewstate для защиты вашей скрытой информации в клиентском коде.
Статья здесь рассказывает, как его правильно зашифровать.(но также предупреждает о проблемах с производительностью).
Другие советы
Это не имеет значения, так как ViewState хранится в скрытом вводе. Используйте тот, который легче для вас. Если бы это было до меня, я бы выбрал ViewState, поскольку среда выполнения ASP.NET будет обрабатывать сериализацию и десериализацию ваших объектов для вас.
Мне нравится ViewState - его гораздо сложнее взломать - злой человек может легко представить вам вашу страницу с неверными данными в ваших скрытых полях
Вы хотите сохранить его в состоянии просмотра. Скрытые поля можно обновлять в браузере, так как они предназначены для хранения информации, которой можно манипулировать на стороне клиента. Состояние просмотра будет проверено asp.net на предмет взлома, где вам придется делать это самостоятельно со скрытым полем.