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

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

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

17
задан pavanred 21 May 2010 в 13:12
поделиться

7 ответов

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

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

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

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

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

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

  • нет липких сеансов, которые перетекают между страницами и несколькими окнами браузера
  • нет очистки на стороне сервера необходимо (для просроченных данных)
  • доступно для клиентских скриптов
18
ответ дан 30 November 2019 в 10:58
поделиться

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

-edit, следовало бы включить больше деталей-

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

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

4
ответ дан 30 November 2019 в 10:58
поделиться

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

1
ответ дан 30 November 2019 в 10:58
поделиться

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

4
ответ дан 30 November 2019 в 10:58
поделиться

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

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

3
ответ дан 30 November 2019 в 10:58
поделиться

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

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

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

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

12
ответ дан 30 November 2019 в 10:58
поделиться

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

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

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

3
ответ дан 30 November 2019 в 10:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: