Подтвердить что ты не робот

Почему используются скрытые поля?

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

-edit, должен был включить более подробно -

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

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

Ответ 4

Существует много полезных сценариев.

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

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

Ответ 5

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

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

Ответ 6

Это одна из причин, удобный способ передачи данных между клиентским кодом (javascript) и сервером.

Ответ 7

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

Ответ 8

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

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