У вас есть много вариантов передачи данных, и все они могут передавать несколько значений между страницами.
Вы можете использовать Request.Form коллекцию, чтобы захватить ценности, которые были представлены из HTML формы с глаголом POST (т.е. «метод =» POST ">)
код выглядит примерно так:.
Dim formvalue As String
formValue = Request.Form("FormField1")
Вы также можете использовать параметры в URL query string (много, как вы, например):
Dim queryStringValue As String
queryStringValue = Request.QueryString("QueryStringValue1")
Вы можете установить cookie (это срок службы будет зависеть от установленного вами значения свойства Expiry):
Настройка файла cookie (обратите внимание: здесь вы используете объект HttpResponse. Браузер пользователя хранит куки, когда он принимает значение заголовка HTTP Set-Cookie из ответа на запрос)
Response.Cookies("CookieValue") = "My Cookie Data"
Response.Cookies("CookieValue").Expires = DateTime.Now.AddDays(1) ' optional, expires tomorrow
Получение значения куков (мы используем HttpRequest объект здесь):
Dim cookieValue As String
cookieValue = Request.Cookies("CookieValue")
Вы можете использовать объект HttpSessionState (доступный через свойство Session страницы). Чтобы установить переменную сеанса:
Session["SessionValue"] = "My Session Value"
Для получения значения сеанса:
Dim sessionValue As String
sessionValue = Session["SessionValue"]
Там еще один способ передать состояние страницы между страницами с помощью Page.Transfer
(см How to: Pass Values Between ASP.NET Web Pages), но я бы попробовать и освоиться с выше, прежде чем смотреть на это.
Что касается лучших практик, это зависит от того, какие данные вы передаете.
- Не пасса конфиденциальных данных с помощью URL (строки запроса), формы или печенья. Они могут перехватываться различными способами.
- Передача конфиденциальных данных с использованием хранилища на стороне сервера (например, состояния сеанса или базы данных), но подумайте над тем, как безопасно хранить идентификатор сеанса.
- Никогда данные доверия извне вашего приложения (данные, которые пользователи ввели через форму, информацию, считанную из базы данных и т. Д.). Всегда кодируйте эту информацию, прежде чем отображать ее снова на своих страницах. Это предотвращает использование Cross-Site Scripting (a.k.a XSS) attacks.
- Не используйте последовательные идентификаторы в строках запросов, в которых вы передаете идентификаторы пользователя между страницами. Предположим, вы создали страницу Orders.aspx, в которой перечислены все заказы для клиента. Вы передаете параметр CustID через строку запроса: Orders.aspx? CustID = 123. Пользователю легко изменить URL-адрес в Orders.aspx? CustID = 124 и просмотреть информацию, которую они не должны. Вы можете обойти это, выполнив проверку, что текущему пользователю разрешено видеть информацию, вы можете использовать идентификатор, который не может быть легко угадан (обычно GUID) или передавать информацию на стороне сервера.
Можете ли вы использовать скрытые поля формы для межстраничного запроса asp.net? – Andomar
@Andomar: вы можете использовать метод Page.PreviousPage.FindControl ("hiddenControl") для доступа к скрытому полю. Ссылка: http://www.codeproject.com/KB/aspnet/CrossPagePosting.aspx – Kirtan