Вопрос

Я всегда видел много скрытых полей, используемых в веб-приложениях. Я работал с кодом, который написан для использования много скрытых полей, а значения данных из видимых полей, отправленных взад-вперед к ним. Хотя я не понимаю, почему используются скрытые поля. Я почти всегда могу думать о способах разрешения такой же проблемы без использования скрытых полей. Как скрытые поля помогают в дизайне?

Может кто-нибудь сказать мне, что именно то преимущество, что предоставляет скрытые поля? Почему используются скрытые поля?

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

Решение

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

Альтернативы:

  • Хранение данных на стороне сеанса (сосессионный cookie)
  • Хранение данных на стороне сервера транзакции (с идентификатором транзакции как одно скрытое поле)
  • Используя путь URL вместо скрытых полевых параметров запроса, где это применимо

Основные проблемы:

  • Значение скрытого поля нельзя доверять не быть подделанным с страницы на страницу (в отличие от хранения на стороне сервера)
  • Большие данные должны быть опубликованы каждый раз, могут быть проблемой и невозможны для некоторых данных (например, загруженные изображения)

Основные преимущества:

  • Нет липких сессий, которые разливаются между страницами и несколькими окнами браузера
  • Нет необходимости очистки на стороне сервера (для истечения данных)
  • Доступны для клиентских сценариев

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

Предположим, вы хотите редактировать объект. Теперь полезно поставить удостоверение личности в скрытое поле. Конечно, вы должны Никогда не полагайтесь на эту ценность (то есть убедиться, что у пользователя есть соответствующие права на insert/update).

Тем не менее, это очень удобное решение. Показано идентификатор в видимом поле (например, текстовое поле только для чтения), но раздражает пользователю.

Хранение идентификатора в сеансе / cookie запрещено, поскольку он не отказывается от нескольких открытых редактированных окон одновременно и накладывает ограничения жизни (время ожидания сеанса приводит к сломанной операции редактирования, очень раздражает).

Использование URL возможна, но нарушает правила дизайна, то есть используйте пост при изменении данных. Кроме того, поскольку он виден пользователю, он создает URL UGGLER.

Наиболее типичное использование, которое я вижу / Использование предназначено для идентификаторов и других вещей, которые действительно не должны быть на странице по какой-либо другой причине, чем ее необходимо в какой-то момент, который будет отправлен обратно на сервер.

-Дит, должен был включить больше деталей

Скажите, например, у вас есть какой-то объект, который вы хотите обновить - пользовательский интерфейс отправляет обратно на коллекцию значений и сервер в этот момент может или не может знать «Эй, это клиентский объект», чтобы вы стреляете с запроса на сервер и Скажи «Эй, дай мне удостоверение личности 7», и теперь у вас есть ваш объект клиентов, так как система знает его. Обновления применяются, проверены, что угодно, и теперь ваш пользовательский интерфейс получает заполненный результат.

Я думаю, что хорошее оправдание / аргумент использует LINQ. Попробуйте обновить объект в LINQ, не получив его от DB сначала. Он не имеет реальной идеи, что это то, что он может отслеживать, пока не получите полный объект.

Вот одна из причин, удобный способ передачи данных между кодом клиента (JavaScript) и Server Side.

Есть много полезных сценариев.

Один - «хранить» некоторые данные на странице, которая не должна быть введена пользователем. Например, храните идентификатор пользователя при генерировании страницы, это значение будет автоматически отправлено с формой обратно на сервер.

Еще один сценарий - безопасность. Добавьте несколько скрытых токенов на страницу и проверьте его существование на сервере. Это поможет определить, была ли форма была подана через браузер или какой-то бот, который только что опубликовал на вашем сайте.

Это держит вещи из URL-адреса (как в QueryString), поэтому он удерживает этот чистый. Это также держит вещи из сессии, которые могут не обязательно быть там.

Кроме того, я не могу придумать слишком много других преимуществ.

Они обычно используются для хранения состояния как взаимодействие прогрессирует. Вместо этого можно использовать файлы cookie, но некоторые люди отключают их. Может также использовать одно скрытое поле, чтобы указать на стороне сервера, но тогда возникают проблемы с заседанием сессии.

Если вы используете скрытое поле в форме, вы увеличиваете бремя формы, включая новый контроль.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top