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

StackOverflow https://stackoverflow.com/questions/1206492

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

  1. Добавьте идентификатор списка в ViewState obj при нажатии на ссылку
  2. Считывает идентификатор из ViewState obj при загрузке страницы, отображает этот список

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

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

Решение

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

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

  • Вы могли бы использовать строку запроса.Все, что вы передаете, - это идентификатор списка.Добавьте идентификатор списка в конец ваших ссылок и найдите его на странице Page_Load.Загрузите соответствующий список, если вы его найдете.Вам нужно будет обработать случай, когда идентификатор списка не передается. Строка запроса не является злой.Это может значительно помочь снизить вес страницы.При использовании с приличным Переписчик URL-адресов, Таким образом, вы получаете большой контроль над тем, что передается ( и, что особенно важно, над тем, что нет).
  • Если вы используете ASP .СЕТЕВЫЕ элементы управления ( такие как Button или LinkButton ) для запуска отображения списка, вы можете установить свойство CommandArgument и выбрать его в коде события.Затем вы можете передать это в качестве параметра любому методу или элементу управления, обрабатывающему визуализацию вашего списка.

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

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

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

<Ол>
  • Session
  • Строка запроса
  • Cookies
  • Пользовательская база данных
  • Кросс-страничные постбэки
  • Ни один из этих методов не будет автоматически добавлять данные в ViewState запрашиваемой страницы. Я полагаю, что из них только # 2 работает с прямыми ссылками HTML (GET), остальные обычно включают постбэк (POST).

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

    Практическое руководство. Передача значений между веб-страницами ASP.NET

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