Pasar datos entre páginas web ASP Net 2.0

En este post me gustaría mostrarles que, además de en la url (lease querystrings), hay otra forma de pasar datos entre páginas asp.
Lo bueno que tiene esta otra forma, que por cierto solo funciona con ASP Net 2.0, es que en la url no va a mostrar ninguna información sobre los datos con los que queremos trabajar, esto se consigue usando Cross Page Postback.
Para trabajar con el ejemplo necesitaremos dos páginas, la origen (Default.aspx) y la de destino (Default2.aspx), la primera será la encargada de enviar los datos y la segunda de recorgerlos y mostrarlos.
Para ver el ejemplo completo aquí están las dos páginas

1. Origen:
PostBackUrl

2. Destino
postbackurl3.JPG
Si se fijan, en la página de destino, en la url no aparece ningún tipo de querystring.

Cómo se hace:

1. En la página de origen lo único que hay que hacer es asignar la propiedad PostBackURL al botón encargado de lanzar la segunda página para que apunte a esta última.
PostBackUrl 

2. En la página destino hay que hacer dos cosas:

2.1 Añadir la directiva @PreviousPageType apuntando a la página desde la que se ha llamado a la de destino.
PostBackUrl

 2.2 En el evento load de esta segunda página ahora podremos insertar el código necesario para capturar los valores de la página de origen.
postbackurl6.JPG

Bueno, espero que lo hayan pillado, ya saben para cualquier cuestión al respecto no duden en agregar comentarios.

33 Respuestas to “Pasar datos entre páginas web ASP Net 2.0”


  1. 1 RODRIGO julio 1, 2007 a las 2:11 am

    YA HICE TODO OKAY PERO ME TIRA UN ERROR
    EN EL NOMBRE,profesion DE TU CODIGO DEL FORMULARIO
    FindControl(«nombre»), TextBox)……..
    supuestamente a q hace referencia eso???

  2. 2 Pablo julio 5, 2007 a las 1:38 am

    pero si yo quiero hacer con solo codigo
    como se haria?????????»

  3. 4 Daniel agosto 23, 2007 a las 4:12 pm

    Hola,
    tengo dos variables en mi pagina, las cuales tienen valores obtenidos de dos label.text, las cuales deseo pasar por la URL a otro formulario.
    si alguien me puede decir como hacerlo lo agradecere bastante

    Daniel

  4. 5 ASPFAN noviembre 24, 2007 a las 2:50 am

    Hola!

    No puedo ver las fotografías del código …

    Saludos

  5. 6 Alejandro enero 23, 2008 a las 2:03 am

    Como puedo hacer esto con C#.

  6. 8 lucia abril 21, 2008 a las 11:35 pm

    siiii pinches fotos

  7. 9 Cosmefulanito junio 23, 2008 a las 9:01 pm

    Solo dale doble click a la imagen y ves todo el codigo….

  8. 10 Isidro agosto 15, 2008 a las 7:50 pm

    No se deja ver el Pinche Codigo

  9. 11 victor octubre 3, 2008 a las 3:39 pm

    Yo hice todo lo que dijiste y el error que me sale es el siguiente: «Referencia a objeto no establecida como instancia de un objeto.»

  10. 12 Wolf noviembre 28, 2008 a las 3:31 pm

    Hola.. me sale el mismo error que Victor…

    Hice todo tal cual estaba akí…

    ishoka@gmail.com

    Saludos

  11. 13 maycol enero 19, 2009 a las 6:00 pm

    yo hice todo lo que dijiste y no me da, pero no sale ningun error en vez de los datos sale sale algo que puese en la excepcion

  12. 14 Carlos enero 20, 2009 a las 6:32 pm

    Hola, para el colega que le interese, pasenmé su correo que le digo como ir del origen al destino, porque estoy haciendo lo mismo, aunque no puedo retroceder.

    si le interesa, pasenmeló.

    saludos
    carlos7020@gmail.com

  13. 15 Carlos abril 24, 2009 a las 7:17 pm

    Hola que tal logre probar este ejemplo sin problemas, me gustaria saber como llevo la informacion de la pagina Default2.aspx a una Default3.aspx gracias

  14. 16 Diclonius agosto 17, 2009 a las 6:42 pm

    Logre realizar tu ejemplo sin problema alguno, sin embargo es importante mencionar (para algunos) que «nombre» y «profesion» son los texbox del primer formulario a los cuales se les hace referencia para cargar los datos.

    Igualmente deberian tambien probar las variables de sesion y aplicacion, son mas sencillas de usar.

  15. 17 Diclonius agosto 17, 2009 a las 6:44 pm

    Carlos, para llevar la informacion de las variables debes seguir los mismos pasos y colocar un button en la pagina, igual te recomiendo uses las variables de sesion o aplicacion q son mas convenientes para usar cuando pasas informacion entre 3 o mas paginas.

  16. 18 Harlen septiembre 17, 2009 a las 12:21 am

    muy bueno interesante

  17. 19 Harlen septiembre 17, 2009 a las 12:25 am

    Existe otro metodo, solo que creando una clase adicional, por ejemplo: datos de una persona codigo, nombre, semestre, curso, nota01, nota02 y nota03, el promedio es calculado en la clase creada. Lo que sigues es crear un form01 conteniendo todos los detalles que menciono, ahora enviar a otra pagina con el promedio calculado y con todos los datelles enviados

    esto va en el load del form 02

    Dim Persona As New Class1
    ClaseDefaul6 = Session(«Class_Default6»)
    TextBox1.Text = ClaseDefaul6.acodigo
    TextBox2.Text = ClaseDefaul6.anombre
    TextBox3.Text = ClaseDefaul6.acurso
    TextBox4.Text = ClaseDefaul6.asemestre
    TextBox5.Text = ClaseDefaul6.anota01
    TextBox6.Text = ClaseDefaul6.anota02
    TextBox7.Text = ClaseDefaul6.anota03
    TextBox8.Text = ClaseDefaul6.apromedio

  18. 20 Felipe Santana septiembre 17, 2009 a las 8:46 pm

    Harlen, efectivamente tienes razón en tu comentario. Solo una salvedad, las variables de session consumen recursos del servidor, con lo que hay que tener cuidado en su uso.

    Aprovecho para deciros que este blog se ha movido a http://netcodigo.webinfo.es

    Saludos

  19. 21 oscar octubre 5, 2009 a las 9:10 am

    el codigo esta perfecto lo unico MALO es que solo funcione para una pagina asp no sale para mas paginas asp

  20. 22 JGC abril 3, 2010 a las 9:24 pm

    Excelente lo consegui, aqui dejo un codigo para pasar informacion de una celda (grid) a otra pagina:

    Protected Sub GridView2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView2.SelectedIndexChanged
    With GridView2.SelectedRow
    Txtcod.Text = .Cells(0).Text //crear el txtcod y txtnom
    TxtNom.Text = .Cells(1).Text
    Dim obj1 As String = Txtcod.Text
    Dim obj2 As String = TxtNom.Text
    Session(«obj1») = obj1
    Session(«obj2») = obj2
    Server.Transfer(«pag02.aspx»)
    End With
    End Sub

    pagina 2 evento page load

    If (Page.IsPostBack = True) Then Exit Sub
    cad = Session(«obj1»)
    cad2 = Session(«obj2»)
    TextBox1.Text = cad2
    GridView2.DataSource = objM.M_LISTA_MEDICOS(cad)
    GridView2.DataBind()

  21. 23 matij junio 21, 2010 a las 5:41 pm

    las informacion del la primera pagina no la puedo ver en la segunda pagina.
    gracias

  22. 24 Pipeman septiembre 28, 2010 a las 2:55 pm

    Gracias por la ayuda me sirvio de mucho

  23. 25 SolyLuna enero 5, 2011 a las 9:16 pm

    Hola !! necesito pasar valores entre pagina aspx y hasta ahora me funciona muy bien pasar los valores de Default1.aspx a Default2.aspx, pero me es imposible pasar la informacion de default2.aspx a Defaul3.aspx , por favor si alguien tien una idea que la comparta conmigo.Estoy utilizando c#.

    Gracias !!

    • 26 Yekuz noviembre 22, 2011 a las 4:00 pm

      Pagina ASP.NET
      Lenguaje: C#
      Mi pagina destino es : ResultadoBusqueda.aspx
      Mi pagina de origen es : Busqueda.aspx

      //En la pagina de destino escribo lo siguiente:

      //En la pagina de Origen C# : Busqueda.aspx.cs
      public partial class Busqueda : System.Web.UI.Page
      {
      public String CodigoBusq //Propiedad Publica
      {
      get
      {
      return txtCodLibro.Text;
      }
      }
      }

      //En la pagina de Destino : ResultadoBusqueda.aspx.cs
      protected void Page_Load(object sender, EventArgs e)
      {
      if (PreviousPage != null)
      {

      if (txtCod.Text != null)
      {
      txtCod.Text = PreviousPage.CodigoBusq.ToString();
      }
      }
      }

      Si tienen alguna duda me envian un mail con asunto : C# – Ayuda, mi correo es: jesusqs14@gmail.com

  24. 27 Anónimo septiembre 29, 2011 a las 3:19 am

    lo haces con pag. de distinto nombre y no anda. pt d mierda !

  25. 28 Úrsula Ramírez Fonseca noviembre 10, 2011 a las 8:14 pm

    Muuuchas gracias, estuve toda la tarde buscando esto. Gracias de nuevo 🙂

  26. 30 Diskxtreme diciembre 9, 2011 a las 6:54 pm

    Para los que tienen problema con la imagen que no se puede ver aki les dejo el link:

  27. 31 Andres Erazo - Coordinador General ITSCS diciembre 12, 2011 a las 11:48 pm

    Mi brow eres un genio me acabas de salvar, suerte, el codigo de JGC mas el tuyo es todo para funcionar. por si explico mas lento:

    Mi caso es que quiero imprimir un reporte por medio de un boton que pase un numero de matricula a la otra pagina, para ello tengo que pasar el numero de matricula y recibirlo en una caja de texto (Textbox1).

    1. vamos a las propiedades del boton que lanzara a la otra pagina y buscamos la propierad postbackurl y le ponermos clic en la pagina de destino(mi pagina A se llama matriculacion.aspx)
    2. en la pagina de destino colocamos en el disenador web (no el de vb) (donde matriculacion.aspx en mi pagina anterior)
    3. programas en el boton esto
    Dim obj1 As String = TextBox13.Text ‘textbox13 es el text donde esta el numero de matricula
    Session(«obj1») = obj1
    Server.Transfer(«rptMatricula.aspx»)
    Response.Redirect(«rptMatricula.aspx»)
    4. programas en el pageload del destino esto:(rptMatricula.aspx)
    Dim cad1 As Integer
    If (Page.IsPostBack = True) Then Exit Sub
    cad1 = Session(«obj1»)
    TextBox1.Text = cad1

    Espero sirva en algo a mi me funciono de pelos

  28. 32 Andres Erazo - Coordinador General ITSCS diciembre 12, 2011 a las 11:52 pm

    Perdon en la ultima parte me olvide de que en el paso 2 en la pagina de destino, colocan esto en el disenador de la pagina (no de vb)

    donde matriculacion.aspx en mi pagina anterior

    Alli si coge todo

  29. 33 Steven Gomez octubre 30, 2012 a las 2:14 pm

    Quiero hacer un aporte, yo estaba haciendo todo correctamente pero no me funcionaba, y luego cai en cuenta que era porque estaba utilizando un Response.Redirect(«Default2.aspx»); No se porque, pero eso causaba que se perdiera como la referencia de la pagina de origen, y siempre PreviousPage era null.


Replica a Úrsula Ramírez Fonseca Cancelar la respuesta




octubre 2006
L M X J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Sindicación

NetMania y la Web

Internet Blog Serial Number 01-10-2006-02

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons


Otros


Añadir a Favoritos de Technorati

Añadir a Netvibes

Añadir a Google

Unión de Bloggers Hispanos

nubes