Cómo pasar valores a través de las páginas en ASP.net sin usar Session

Estoy tratando de mejorar el rendimiento de mi portal web. Estoy usando Session para almacenar información de estado.

Pero escuché que usar sesión disminuirá la velocidad de la aplicación. ¿Hay alguna otra forma de pasar valores a través de la página en asp.net?

Puede pasar valores de una página a otra por los siguientes ..

 Response.Redirect Cookies Application Variables HttpContext 

Response.Redirect

SET:

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

OBTENER :

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

Galletas

SET:

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

OBTENER :

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

Variables de aplicación

SET:

 Application["Name"] = "pandian"; 

OBTENER :

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

Consulte el contenido completo aquí: Pase los valores de uno a otro

Hay múltiples formas de lograr esto. Puedo explicarte brevemente sobre los 4 tipos que utilizamos en nuestro ciclo de vida de progtwigción diaria.

Por favor revisa los puntos a continuación.

1 cadena de consulta.

FirstForm.aspx.cs

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

SecondForm.aspx.cs

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

Esta es la forma más confiable cuando se pasa tipo de valor entero u otros parámetros cortos. Más avance en este método si está utilizando caracteres especiales en el valor mientras lo pasa a través de la cadena de consulta, debe codificar el valor antes de pasarlo a la página siguiente. Así que nuestro fragmento de código será algo como esto:

FirstForm.aspx.cs

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

SecondForm.aspx.cs

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

Codificación de URL

  1. Server.URLEncode
  2. HttpServerUtility.UrlDecode

2. Pasar valor a través del objeto de contexto

Pasar valor a través del objeto de contexto es otro método ampliamente 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); 

Tenga en cuenta que estamos navegando a otra página usando Server.Transfer en lugar de Response.Redirect. Algunos de nosotros también usamos Session object para pasar valores. En ese método, el valor se almacena en el objeto Session y luego se retira del objeto Session en la segunda página.

3. Publicación del formulario en otra página en lugar de PostBack

Tercer método para pasar el valor publicando la página en otro formulario. Aquí está el ejemplo de eso:

FirstForm.aspx.cs

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

Y creamos una función de JavaScript para publicar el formulario.

SecondForm.aspx.cs

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

Aquí estamos publicando el formulario en otra página en lugar de en sí mismo. Puede obtener ViewState no válido o error en la segunda página con este método. Para manejar este error es poner EnableViewStateMac=false

4. Otro método es mediante la adición de la propiedad de control PostBackURL para la publicación de páginas cruzadas.

En ASP.NET 2.0, Microsoft ha resuelto este problema al agregar la propiedad de control PostBackURL para el reenvío de páginas cruzadas. La implementación es una cuestión de establecer una propiedad de control y listo.

FirstForm.aspx.cs

  

SecondForm.aspx.cs

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

En el ejemplo anterior, estamos asignando la propiedad PostBackUrl del botón, podemos determinar la página a la que se publicará en lugar de a sí misma. En la página siguiente, podemos acceder a todos los controles de la página anterior utilizando el objeto Solicitud.

También puede usar la clase PreviousPage para acceder a los controles de la página anterior en lugar de usar el clásico objeto Request.

SecondForm.aspx

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

Como habrás notado, esta es también una implementación simple y limpia de pasar el valor entre las páginas.

Referencia: SITIO WEB DE MICROSOFT MSDN

¡CÓDIGO FELIZ!

Si es solo para pasar valores entre páginas y solo lo requiere para una solicitud. Usa el Context.

Contexto

El objeto Context contiene datos para un solo usuario, para una sola solicitud, y solo se conserva durante la duración de la solicitud. El contenedor de Contexto puede contener grandes cantidades de datos, pero generalmente se usa para guardar pequeños datos porque a menudo se implementa para cada solicitud a través de un controlador en el archivo global.asax. El Contenedor de Contexto (accesible desde el objeto de Página o usando System.Web.HttpContext.Current) se proporciona para contener los valores que deben pasar entre diferentes HttpModules y HttpHandlers. También se puede usar para guardar información relevante para una solicitud completa. Por ejemplo, el portal IBuySpy incluye información de configuración en este contenedor durante el controlador de eventos Application_BeginRequest en global.asax. Tenga en cuenta que esto solo se aplica durante la solicitud actual; si necesita algo que todavía estará disponible para la próxima solicitud, considere usar ViewState. La configuración y obtención de datos de la colección Context utiliza una syntax idéntica a la que ya ha visto con otros objetos de colección, como la Aplicación, la Sesión y la Caché. Dos ejemplos simples se muestran aquí:

 // 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

Usando lo anterior. Si luego hace un Server.Transfer los datos que ha guardado en el contexto ahora estarán disponibles para la próxima página. No tiene que preocuparse por eliminar / poner en orden esta información, ya que solo tiene un scope para la solicitud actual.

Puede asignarlo a un campo oculto y recuperarlo usando

 var value= Request.Form["value"] 

Puede usar una cadena de consulta para pasar el valor de una página a otra.

1.pasar el valor usando querystring

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

2. Recupere el valor en la página que desee utilizando cualquiera de estos métodos.

Método1 :

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

Método2 :

  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 : El método 2 es el método más rápido.