Подтвердить что ты не робот

Как передавать значения на страницах ASP.net без использования сеанса

Я пытаюсь улучшить производительность своего веб-портала. Я использую Session для хранения информации о состоянии.

Но я слышал, что использование сеанса уменьшит скорость приложения. Есть ли другой способ передать значения на странице в asp.net.

4b9b3361

Ответ 1

Вы можете передавать значения с одной страницы на другую следующими способами.

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();

Обратите внимание на полный контент здесь: Передать значения из одного в другое

Ответ 2

Существует несколько способов достижения этого. Я могу вкратце объяснить вам четыре типа, которые мы используем в нашем жизненном цикле ежедневного программирования.

Пожалуйста, пройдите нижеуказанные пункты.

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

СЧАСТЛИВЫЙ КОДИРОВАНИЕ!

Ответ 3

Если это просто для передачи значений между страницами, и для этого требуется только один запрос. Используйте 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, данные, которые вы сохранили в контексте, теперь будут доступны для следующей страницы. Вам не нужно заботиться о том, чтобы удалить/убрать эти данные, поскольку он привязан только к текущему запросу.

Ответ 4

Вы можете назначить его скрытому полю и получить его с помощью

var value= Request.Form["value"]

Ответ 5

Вы можете использовать строку запроса для передачи значения с одной страницы на другую.

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 является самым быстрым методом.