Como passar valores pelas páginas no ASP.net sem usar a Sessão

Estou tentando melhorar o desempenho do meu portal da web. Estou usando a session para armazenar informações de estado.

Mas ouvi dizer que o uso da session diminuirá a velocidade do aplicativo. Existe alguma outra maneira de passar valores através da página no asp.net.

Você pode passar valores de uma página para outra pelos seguintes.

 Response.Redirect Cookies Application Variables HttpContext 

Response.Redirect

SET:

 Response.Redirect("Defaultaspx?Name=Pandian"); 

OBTER :

 string Name = Request.QueryString["Name"]; 

Biscoitos

SET:

 HttpCookie cookName = new HttpCookie("Name"); cookName.Value = "Pandian"; 

OBTER :

 string name = Request.Cookies["Name"].Value; 

Variáveis ​​de Aplicação

SET:

 Application["Name"] = "pandian"; 

OBTER :

 string Name = Application["Name"].ToString(); 

Consulte o conteúdo completo aqui: Passe valores de um para outro

Existem várias maneiras de conseguir isso. Eu posso te explicar resumidamente sobre os 4 tipos que usamos em nosso ciclo de vida de programação diária.

Por favor, vá através dos pontos abaixo.

1 String de consulta.

FirstForm.aspx.cs

 Response.Redirect("SecondForm.aspx?Parameter=" + TextBox1.Text); 

SecondForm.aspx.cs

 TextBox1.Text = Request.QueryString["Parameter"].ToString(); 

Esta é a maneira mais confiável quando você está passando um tipo inteiro de valor ou outros parâmetros curtos. Mais avanço neste método se você estiver usando qualquer caractere especial no valor enquanto passa através da string de consulta, você deve codificar o valor antes de passá-lo para a próxima página. Então, nosso snippet de código será algo assim:

FirstForm.aspx.cs

 Response.Redirect("SecondForm.aspx?Parameter=" + Server.UrlEncode(TextBox1.Text)); 

SecondForm.aspx.cs

 TextBox1.Text = Server.UrlDecode(Request.QueryString["Parameter"].ToString()); 

Codificação de URL

  1. Server.URLEncode
  2. HttpServerUtility.UrlDecode

2. Valor de passagem através do object de contexto

Passar valor através do object de contexto é outro método amplamente utilizado.

FirstForm.aspx.cs

 TextBox1.Text = this.Context.Items["Parameter"].ToString(); 

SecondForm.aspx.cs

 this.Context.Items["Parameter"] = TextBox1.Text; Server.Transfer("SecondForm.aspx", true); 

Observe que estamos navegando para outra página usando Server.Transfer em vez de Response.Redirect.Alguns de nós também usam o object Session para passar valores. Nesse método, o valor é armazenado no object Session e depois retirado do object Session na segunda página.

3. Postando formulário para outra página em vez de PostBack

Terceiro método de passar valor postando página para outro formulário. Aqui está o exemplo disso:

FirstForm.aspx.cs

 private void Page_Load(object sender, System.EventArgs e) { buttonSubmit.Attributes.Add("onclick", "return PostPage();"); } 

E criamos uma function javascript para postar o formulário.

SecondForm.aspx.cs

 function PostPage() { document.Form1.action = "SecondForm.aspx"; document.Form1.method = "POST"; document.Form1.submit(); } TextBox1.Text = Request.Form["TextBox1"].ToString(); 

Aqui estamos postando o formulário para outra página em vez de si mesmo. Você pode obter viewstate inválido ou erro na segunda página usando este método. Para lidar com esse erro é colocar EnableViewStateMac=false

4. Outro método é adicionar a propriedade PostBackURL de controle para postagem de página cruzada

No ASP.NET 2.0, a Microsoft resolveu esse problema adicionando a propriedade PostBackURL de controle para postagem de página cruzada. A implementação é uma questão de definir uma propriedade de controle e você está pronto.

FirstForm.aspx.cs

  

SecondForm.aspx.cs

 TextBox1.Text = Request.Form["TextBox1"].ToString(); 

No exemplo acima, estamos atribuindo a propriedade PostBackUrl do botão, podemos determinar a página para o qual ele irá postar em vez de si mesmo. Na próxima página, podemos acessar todos os controles da página anterior usando o object Request.

Você também pode usar a class PreviousPage para acessar os controles da página anterior em vez de usar o object Request clássico.

SecondForm.aspx

 TextBox textBoxTemp = (TextBox) PreviousPage.FindControl(“TextBox1″); TextBox1.Text = textBoxTemp.Text; 

Como você observou, essa também é uma implementação simples e limpa do valor de passagem entre as páginas.

Referência: SITE DA MICROSOFT MSDN

CODIFICAÇÃO FELIZ!

Se é apenas para passar valores entre páginas e você só precisa para o pedido. Use o Context.

Contexto

O object Contexto contém dados para um único usuário, para uma única solicitação, e só é mantido durante a duração da solicitação. O contêiner Contexto pode conter grandes quantidades de dados, mas normalmente é usado para reter pequenos fragments de dados, pois geralmente é implementado para cada solicitação por meio de um manipulador no global.asax. O contêiner Context (acessível a partir do object Page ou usando System.Web.HttpContext.Current) é fornecido para conter valores que precisam ser passados ​​entre diferentes HttpModules e HttpHandlers. Ele também pode ser usado para armazenar informações relevantes para uma solicitação inteira. Por exemplo, o portal IBuySpy insere algumas informações de configuração nesse contêiner durante o manipulador de events Application_BeginRequest no global.asax. Observe que isso se aplica somente durante a solicitação atual; Se você precisar de algo que ainda estará disponível para a próxima solicitação, considere usar o ViewState. Definir e obter dados da coleção Context usa uma syntax idêntica àquela que você já viu com outros objects de coleção, como o Application, Session e Cache. Dois exemplos simples são mostrados aqui:

 // Add item to Context Context.Items["myKey"] = myValue; // Read an item from the Context Response.Write(Context["myKey"]); 

http://msdn.microsoft.com/pt-br/magazine/cc300437.aspx#S6

Usando o acima. Se você fizer um Server.Transfer os dados salvos no contexto e agora estarão disponíveis para a próxima página. Você não precisa se preocupar em remover / arrumar esses dados, pois é apenas um escopo para a solicitação atual.

Você pode atribuí-lo a um campo oculto e recuperá-lo usando

 var value= Request.Form["value"] 

Você pode usar a string de consulta para passar o valor de uma página para outra.

1.passar o valor usando querystring

  Response.Redirect("Default3.aspx?value=" + txt.Text + "& number="+n); 

2.Retrive o valor na página que você deseja usando qualquer um desses methods.

Método 1 :

  string v = Request.QueryString["value"]; string n=Request.QueryString["number"]; 

Método 2 :

  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"; } } 

NOTA : o método 2 é o método mais rápido.