В этой статье мы обсудим несколько методов передачи данных между страницами ASP.NET. Надеемся, это поможет каждому правильно понять полезность и удобство передачи данных между страницами ASP.NET.
0. Введение
Веб-страницы не сохраняют состояние. Сервер считает, что каждый запрос исходит от другого пользователя. Поэтому состояние переменных не сохраняется между несколькими последовательными запросами одной и той же страницы или при переходе на страницу. При проектировании и разработке веб-системы с использованием ASP.NET возникает важная проблема: как обеспечить правильную, безопасную и эффективную передачу данных между страницами. Asp.net предоставляет различные технологии, такие как управление состоянием, для решения проблемы сохранения. Что касается проблем с данными, давайте рассмотрим различные методы решения этой проблемы в .NET и соответствующие случаи их применения.
1. Различные методы и анализ передачи данных между страницами ASP.NET.
1.1 Использование метода Querystring
QueryString также называется строкой запроса. Этот метод добавляет передаваемые данные в конец адреса веб-страницы (URL) и передает их. Например, чтобы перейти со страницы A.aspx на страницу B.aspx, вы можете использовать метод Request.Redirect("B.aspx? Имя параметра = значение параметра") или использовать гиперссылку: после перехода на страницу. , он будет доступен на целевой странице Ruquest["имя параметра"] для получения параметров. Преимущество использования метода QuerySting заключается в том, что он прост в реализации и не использует ресурсы сервера; недостатком является то, что переданное значение будет отображаться в адресной строке браузера с риском подделки, и объект не может быть изменен. передано. Строку запроса можно использовать только в том случае, если возможен запрос страницы через URL-адрес.
1.2 Использование скрытых полей
Скрытые поля не будут отображаться в браузере пользователя. Обычно на страницу добавляется скрытый элемент управления. При взаимодействии с сервером значение присваивается скрытому элементу управления и передается на следующую страницу. Скрытый домен может быть хранилищем любой информации, хранящейся на веб-странице и имеющей отношение к веб-странице. При использовании скрытого поля для хранения значения используйте: скрытое control.value=числовое значение. При извлечении полученного значения используйте: переменная=скрытое control.value. Преимущество использования скрытых полей заключается в простоте реализации. Скрытые поля представляют собой стандартные элементы управления HTML и не требуют сложной логики программирования. Скрытые поля сохраняются и читаются на странице, не требуют каких-либо ресурсов сервера, и почти все браузеры и клиентские устройства поддерживают формы со скрытыми полями. Недостаток заключается в том, что он имеет мало структур хранения и поддерживает только простые структуры данных. Емкость хранилища невелика, поскольку оно хранится в самой странице, поэтому оно не может хранить большие значения, а большие объемы данных будут блокироваться брандмауэрами и прокси-серверами.
1.3 Состояние просмотра
ViewState — это скрытое поле формы, управляемое платформой страниц ASP.NET. Когда ASP.NET выполняет страницу, значения ViewState и все элементы управления на странице собираются и форматируются в закодированную строку, а затем присваиваются свойству Value скрытого поля формы. При использовании ViewState для передачи данных вы можете использовать: ViewState ["имя переменной"]=числовое значение. При получении данных используйте:variable=ViewState["имя переменной"]. Преимущества использования ViewState: значения автоматически сохраняются между несколькими запросами одной и той же страницы, ресурсы на стороне сервера не требуются, а реализация проста. Значения в состоянии просмотра хешируются и сжимаются, а также сохраняются. закодированы для реализации Unicode, и их безопасность требует более высокого уровня, чем использование скрытого поля; недостаток заключается в том, что, поскольку ViewState хранится в самой странице, если сохраняется большее значение, пользователь может замедлиться при отображении страницы и ее отправке; . Хотя состояние просмотра хранит данные в хешированном формате, их все равно можно подделать.
1.4 Использование файлов cookie
Файлы cookie могут передавать небольшой объем информации между страницами и могут храниться в текстовом файле на клиенте или в памяти клиента. Метод Cookie подходит для хранения часто изменяющейся информации на небольшом количестве страниц, например, для сохранения имен пользователей для входа на веб-сайты, вошедшие в систему, обеспечения удобства ввода данных пользователем и сохранения персонализированных настроек пользователей для некоторых определяемых пользователем элементов. Доступно при использовании файлов cookie для передачи данных: Response.Cookies["имя ключа"]=значение ключа для получения данных: имя переменной=Request.Cookies["имя ключа"]. Преимущества использования файлов cookie: файлы cookie хранятся на клиенте, не используют ресурсы сервера, просты в реализации и могут настраивать срок действия. Недостатки: объем данных, которые можно сохранить, относительно невелик. Поскольку файлы cookie поддерживаются не всеми браузерами и могут быть запрещены или удалены пользователями, их нельзя использовать для сохранения важных данных. Кроме того, файлы cookie хранятся в виде простого текста, и хранить в них конфиденциальные незашифрованные данные нецелесообразно.
1.5 Использование переменных приложения
Переменные приложения также можно использовать для передачи значений между страницами. Переменные приложения являются глобальными, и все пользователи совместно используют переменную приложения. После определения она будет влиять на все части программы. Если вы хотите использовать определенное значение переменной во всем приложении, лучшим выбором будет объект Application. При сохранении данных добавьте значение в переменную приложения: Application["имя переменной"]=числовое значение; используйте для получения данных: переменная=Application["имя переменной"]; если вам не нужно использовать приложение, очистите его; явно :Application["имя количества"]=null.
Преимущества применения: Простота в использовании, глобальный охват. Доступно для всех страниц приложения. Недостатки: Если процесс на стороне сервера, сохраняющий данные, поврежден (например, из-за сбоя, обновления или завершения работы сервера), данные будут потеряны, поэтому вам необходимо иметь гарантированную стратегию при использовании приложения, которое занимает память на стороне сервера; , что может повлиять на производительность сервера и масштабируемость приложения.
1.6 Использование переменных сеанса
Объекты сеанса можно использовать для хранения информации об определенных диалогах, которые необходимо поддерживать. Разные клиенты генерируют разные объекты сеанса. Сеанс используется для хранения краткосрочной информации, специфичной для отдельного сеанса. Использование и формат Session такие же, как и Application.
Преимущества: его легко реализовать, он обеспечивает высокую безопасность и надежность, может справляться с перезапуском IIS и перезапуском вспомогательных процессов и может использоваться в нескольких процессах. Недостатком является то, что он потребляет память на стороне сервера. Поэтому не храните много информации. Наиболее распространенным использованием сеанса является предоставление функций идентификации пользователя веб-приложениям вместе с файлами cookie. Сеансы также можно использовать в браузерах, которые не поддерживают файлы cookie. Однако использование сеанса без файлов cookie требует размещения идентификатора сеанса в строке запроса, что также страдает от проблем безопасности, указанных в разделе строки запроса этой статьи.
1.7 Использование статических свойств классов
Этот метод использует статические свойства класса для передачи значений между двумя страницами. Определите класс, содержащий статические атрибуты; присвойте значение, которое будет передано статическому атрибуту; целевая страница может получить значение, которое будет передано на исходной странице, через статический атрибут.
Преимущество состоит в том, что он может легко передавать несколько данных, но недостатком является то, что он требует дополнительного программирования, увеличивает рабочую нагрузку на программирование и занимает память сервера.
1.8 Использование Server.Transfer
При передаче потока выполнения из текущего файла ASPX на другую страницу ASPX на том же сервере с помощью метода Server.Transfer данные формы или строка запроса могут быть сохранены. Этот метод заключается в установке второго параметра метода в значение True. первая страница использует Server.Transfer("имя целевой страницы.aspx", true); целевая страница использует: Ruquest.Form["Имя элемента управления"] или Ruquest.QueryString["Имя элемента управления"] для получения данных. Его также можно использовать в Asp.net2.0 следующим образом:
Предыдущая страница стр. 1;
pg1=(Предыдущая страница)Context.Handler;
Response.Write(pg1.Name);
Объяснение: Этот код используется для получения переданного значения с целевой страницы. Предыдущая страница — это имя класса исходной страницы, Имя — это атрибут, определенный на исходной странице, и в нем хранятся данные, которые необходимо передать. атрибут.
Используя этот метод, вам нужно написать код для создания некоторых свойств, чтобы вы могли получить к ним доступ с другой страницы. Вы можете получить доступ к значению как к свойству объекта на другой странице. Этот метод особенно полезен при передаче значений между страницами. Этот метод не только простой, но и объектно-ориентированный.
1.9 Кэш
Кэш имеет мощные функции работы с данными. Он хранит данные в виде набора пар ключ-значение. Элементы данных можно вставлять и получать, указав ключевые слова. Его возможности завершения на основе зависимостей позволяют точно контролировать, как данные в кэше обновляются и своевременно удаляются. Он может выполнять внутреннее управление блокировками и не требует использования методов Lock() и Unlock() для управления сериализацией, как объект Application. Недостаток в том, что способ использования сложен, а неправильное использование снизит производительность.
2. Методы передачи значений, которые можно использовать в различных ситуациях перехода на страницу.
2.1 Сценарий 1: Исходная страница может перейти на целевую страницу, а исходная страница передает данные на целевую страницу.
Использование строк запроса — это простой и часто используемый метод передачи небольшого объема информации с одной страницы на другую, при этом не возникает проблем с безопасностью. Используйте метод Server.Transfer для передачи данных формы или строк запроса на другую страницу. Вы также можете сохранить. HttpContext начальной страницы. Этот метод можно использовать, когда целевая страница и исходная страница находятся на одном сервере.
2.2 Случай 2: страница передает значение на свою страницу
То есть, сохраняя значения для нескольких запросов к одной и той же странице, свойство ViewState обеспечивает функциональность с базовой безопасностью. Скрытые поля также можно использовать для хранения небольшого объема информации о странице, которая отправляется обратно на нее или на другую страницу, и используются, когда не рассматриваются проблемы безопасности.
2.3 Случай 3: Исходная страница передает значения целевой странице, но исходную страницу нельзя напрямую подключить к целевой странице.
Существует несколько методов, и какой из них использовать, зависит от конкретной ситуации.
Приложение: хранит глобальную информацию, которая используется несколькими пользователями и меняется нечасто, когда безопасность не является проблемой. Не храните большие объемы информации. Сеанс: хранит краткосрочную информацию, специфичную для отдельного сеанса и требующую высокого уровня безопасности. Не храните большие объемы информации в состоянии сеанса. Обратите внимание, что объекты состояния сеанса создаются и поддерживаются в течение всего времени существования каждого сеанса в приложении. В приложениях, поддерживающих большое количество пользователей, это может потреблять значительные ресурсы сервера и влиять на масштабируемость.
Файлы cookie: используются, когда вам необходимо сохранить небольшой объем информации на стороне клиента и нет проблем с безопасностью. Статические атрибуты класса облегчают передачу нескольких данных.
Кэш: объект для одного пользователя, группы пользователей или всех пользователей. Данные могут сохраняться по нескольким запросам долго и эффективно. Вышеуказанные методы используются не только в третьем, но и в двух предыдущих случаях. Просто используйте их как можно реже, когда они не нужны, иначе это приведет к пустой трате ресурсов или увеличению сложности программы.