Могу ли я использовать ViewState, чтобы исключить необходимость передачи строки запроса?

2

У меня есть страница с несколькими расширяемыми списками. В идеальном мире я хотел бы отображать ссылки на каждый из этих списков, и когда один щелкнул, он перезагрузит страницу с указанным конкретным списком. Я прочитал, что ViewState может устранить необходимость скрытых полей ввода, строк запроса и т.д., Но я не знаком с этой концепцией.

В основном мне нужно выполнить две вещи:

  • Добавить идентификатор списка в ViewState obj при нажатии ссылки
  • Чтение идентификатора из ViewState obj при загрузке страницы, отображение этого списка

Может ли кто-нибудь предоставить мне некоторые ресурсы и/или помощь по этой теме? Спасибо!

  • 0
    Все ли эти ссылки и списки находятся на одной странице или ссылки находятся на отдельной странице от списков?
  • 1
    Списки являются частью CMS, которую я использую. У меня есть элемент управления, который отображает любое количество списков одновременно, и я хочу, чтобы «стартовая страница» содержала ссылки на каждый список, а затем при нажатии на ссылку состояние представления обновляется с помощью идентификатора списка, по которому щелкнули
Теги:
viewstate

2 ответа

2
Лучший ответ

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

Есть лучшие способы добиться того, что вы хотите сделать.

  • Вы можете использовать запрос. Все, что вы передаете, это идентификатор списка. Добавьте идентификатор списка в конец ваших ссылок и найдите его на странице_Load. Загрузите соответствующий список, если найдете его. Вы захотите обработать случай, когда идентификатор списка не передан. Запрос не является злом. Это может значительно снизить вес страницы. Когда вы используете достойный URL-редиректор, вы получаете большой контроль над тем, что получает (и что важно, что нет)
  • Если вы используете элементы управления ASP.NET(например, Button или LinkButton) для запуска отображения списка, вы можете установить свойство CommandArgument и выбрать его в коде события. Затем вы можете передать это как параметр любому методу или Control обрабатывает рендеринг списка.
  • 0
    спасибо за вклад :)
  • 0
    Нет проблем. Обязательно проверьте опцию CommandArgument, если вы не хотите использовать строки запроса.
1

ViewState используется для хранения информации на одной странице между сообщениями обратной связи, а не с аргументами между страницами.

Вы можете передавать аргументы между страницами, используя:

  • Session
  • Строка запроса
  • Cookies
  • Пользовательская база данных
  • Перекрёстные обратные сообщения

Ни один из этих методов не будет автоматически добавлять данные в ViewState запрашиваемой страницы. Из них я считаю, что только # 2 работает с прямыми ссылками HTML (GET), остальные обычно включают обратную передачу (POST).

Вам всегда понадобится какой-то наборщик ViewState (ViewState [ "Id" ] = source.Id) на запрошенной странице.

Как передать значения между веб-страницами ASP.NET

  • 0
    Пожалуйста, измените этот ответ, если вы можете улучшить его. Спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню