Я пытаюсь улучшить производительность своего веб-портала. Я использую Session для хранения информации о состоянии.
Но я слышал, что использование сеанса уменьшит скорость приложения. Есть ли другой способ передать значения на странице в asp.net.
Я пытаюсь улучшить производительность своего веб-портала. Я использую Session для хранения информации о состоянии.
Но я слышал, что использование сеанса уменьшит скорость приложения. Есть ли другой способ передать значения на странице в asp.net.
Вы можете передавать значения с одной страницы на другую следующими способами.
Response.Redirect
Cookies
Application Variables
HttpContext
Response.Redirect
SET:
Response.Redirect("Defaultaspx?Name=Pandian");
GET:
string Name = Request.QueryString["Name"];
Cookies
SET:
HttpCookie cookName = new HttpCookie("Name");
cookName.Value = "Pandian";
GET:
string name = Request.Cookies["Name"].Value;
Переменные приложения
SET:
Application["Name"] = "pandian";
GET:
string Name = Application["Name"].ToString();
Обратите внимание на полный контент здесь: Передать значения из одного в другое
Существует несколько способов достижения этого. Я могу вкратце объяснить вам четыре типа, которые мы используем в нашем жизненном цикле ежедневного программирования.
Пожалуйста, пройдите нижеуказанные пункты.
1 Строка запроса.
FirstForm.aspx.cs
Response.Redirect("SecondForm.aspx?Parameter=" + TextBox1.Text);
SecondForm.aspx.cs
TextBox1.Text = Request.QueryString["Parameter"].ToString();
Это самый надежный способ, когда вы передаете целочисленный вид значения или другие короткие параметры. Более продвинутый в этом методе, если вы используете какие-либо специальные символы в значении при передаче его через строку запроса, , вы должны закодировать значение, прежде чем передавать его на следующую страницу. Таким образом, наш фрагмент кода будет чем-то вроде это:
FirstForm.aspx.cs
Response.Redirect("SecondForm.aspx?Parameter=" + Server.UrlEncode(TextBox1.Text));
SecondForm.aspx.cs
TextBox1.Text = Server.UrlDecode(Request.QueryString["Parameter"].ToString());
Кодирование URL
2. Передача значения через объект контекста
Передача значения через объект контекста - это еще один широко используемый метод.
FirstForm.aspx.cs
TextBox1.Text = this.Context.Items["Parameter"].ToString();
SecondForm.aspx.cs
this.Context.Items["Parameter"] = TextBox1.Text;
Server.Transfer("SecondForm.aspx", true);
Обратите внимание, что мы переходим на другую страницу, используя Server.Transfer вместо Response.Redirect. Некоторые из нас также используют объект Session для передачи значений. В этом методе значение хранится в объекте Session, а затем выведено из объекта Session на второй странице.
3. Отправка формы на другую страницу вместо PostBack
Третий метод передачи значения путем размещения страницы в другой форме. Вот пример этого:
FirstForm.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
buttonSubmit.Attributes.Add("onclick", "return PostPage();");
}
И мы создаем функцию javascript для публикации формы.
SecondForm.aspx.cs
function PostPage()
{
document.Form1.action = "SecondForm.aspx";
document.Form1.method = "POST";
document.Form1.submit();
}
TextBox1.Text = Request.Form["TextBox1"].ToString();
Здесь мы отправляем форму на другую страницу, а не на себя. Используя этот метод, вы можете получить недопустимый статус просмотра или ошибку на второй странице. Для обработки этой ошибки нужно поставить EnableViewStateMac=false
4. Другой метод заключается в добавлении свойства PostBackURL управления для пересылки страницы назад
В ASP.NET 2.0 Microsoft решила эту проблему, добавив свойство PostBackURL управления для пересылки страницы назад. Реализация - вопрос установки одного свойства управления, и все готово.
FirstForm.aspx.cs
<asp:Button id=buttonPassValue style="Z-INDEX: 102″ runat="server" Text="Button" PostBackUrl="~/SecondForm.aspx"></asp:Button>
SecondForm.aspx.cs
TextBox1.Text = Request.Form["TextBox1"].ToString();
В приведенном выше примере мы назначаем свойство PostBackUrl кнопки, мы можем определить страницу, на которую она будет отправляться, а не сама. На следующей странице мы можем получить доступ ко всем элементам управления предыдущей страницы, используя объект Request.
Вы также можете использовать класс PreviousPage для доступа к элементам управления предыдущей страницы вместо использования классического объекта Request.
SecondForm.aspx
TextBox textBoxTemp = (TextBox) PreviousPage.FindControl("TextBox1″);
TextBox1.Text = textBoxTemp.Text;
Как вы заметили, это также простая и чистая реализация передачи значения между страницами.
Ссылка: ВЕБ-САЙТ MICROSOFT MSDN
СЧАСТЛИВЫЙ КОДИРОВАНИЕ!
Если это просто для передачи значений между страницами, и для этого требуется только один запрос. Используйте Context.
Контекст
Объект Context хранит данные для одного пользователя, для одного запрос, и он сохраняется только на время запроса. Контекстный контейнер может хранить большие объемы данных, но обычно это используется для хранения небольших фрагментов данных, поскольку он часто реализуется для каждый запрос через обработчик в global.asax. Контекст контейнер (доступный из объекта Page или использование System.Web.HttpContext.Current) предоставляется для хранения значений, которые необходимы для передачи между различными HttpModules и HttpHandlers. Оно может также использоваться для хранения информации, которая имеет отношение к целому запрос. Например, портал IBuySpy содержит некоторую конфигурацию информация в этот контейнер во время Application_BeginRequest обработчик событий в global.asax. Обратите внимание, что это относится только во время текущий запрос; если вам нужно что-то еще для следующего запроса рассмотрите использование ViewState. Настройка и получение данные из коллекции Context используют синтаксис, идентичный тому, что вы уже видели с другими объектами коллекции, такими как Application, Сеанс и кеш. Здесь показаны два простых примера:
// Add item to
Context Context.Items["myKey"] = myValue;
// Read an item from the
Context Response.Write(Context["myKey"]);
http://msdn.microsoft.com/en-us/magazine/cc300437.aspx#S6
Используя вышеизложенное. Если вы затем выполните Server.Transfer
, данные, которые вы сохранили в контексте, теперь будут доступны для следующей страницы. Вам не нужно заботиться о том, чтобы удалить/убрать эти данные, поскольку он привязан только к текущему запросу.
Вы можете назначить его скрытому полю и получить его с помощью
var value= Request.Form["value"]
Вы можете использовать строку запроса для передачи значения с одной страницы на другую.
1.Вставьте значение с помощью querystring
Response.Redirect("Default3.aspx?value=" + txt.Text + "& number="+n);
2.Установите значение на странице u want, используя любой из этих методов.
Method1
string v = Request.QueryString["value"];
string n=Request.QueryString["number"];
Method2
NameValueCollection v = Request.QueryString;
if (v.HasKeys())
{
string k = v.GetKey(0);
string n = v.Get(0);
if (k == "value")
{
lbltext.Text = n.ToString();
}
if (k == "value1")
{
lbltext.Text = "error occured";
}
}
ПРИМЕЧАНИЕ: метод 2 является самым быстрым методом.