You are on page 1of 3

el Guille, la Web del Visual Basic, C#, .NET y más...

 
 
  Lo+ ­ WinFX ­ .NET ­ ADO.NET ­ ASP.NET ­ Cómo... ­ Colabora ­ VB6 ­ A P I ­ HTML ­ Vista ­ Links ­ Foros  

Tus planes de alojamiento (hosting)  con .NET Framework 4.0: ASP.NET 4.0 y MVC3  Contrátalos en    indicando "elGuille" 

 

Técnicas de Navegacion entre Web Forms ASP.NET 
Fecha: 30/Abr/2005 (24/04/2005)  Autor: Luis Véliz (lveliz@mundoedwards.com) 

  

Las ofertas  del Guille  para  alojamiento  (hosting) de  sitios web,  seguramente  los mejores  precios del 

Introducción  Un aspecto importante en la construcción de aplicaciones Web es la navegación entra páginas y el uso de link, que en conjunto unen las  páginas de nuestra aplicación haciendo de esta un todo. De lo contrario tendríamos páginas aisladas que no se podrían comunicar entre si.  En este artículo, revisaremos distintas técnicas de navegación tanto con código a nivel del servidor como del cliente.   Conocer estas técnicas será de gran utilidad en el momento de diseñar una aplicación WEB.   Técnicas de navegación entre páginas   a) Navegación con el control HiperLink  Esta técnica permite navegar hasta otra página html como asp y aspx.  Este control no proporciona ningún evento del lado del servidor. La navegación se realiza inmediatamente cuando el usuario genera el  evento click, del lado del cliente, en el control.   La dirección de destino se especifica en la propiedad ‘NavigateURL’ del control. Si se quiere interceptar un evento clic desde el servidor  para controlar la navegación desde código, se puede utilizar un control de servidor Button, LinkButton o ImageButton más el objeto  Response.   b) Utilizando el método Response.Redirect  Permite navegar hasta otra página, pero por código. Es equivalente a la navegación con el control HiperLink. Para utilizar este método,  simplemente introduzca el código siguiente en el evento click de un control de servidor Button:  

Private Sub ImageButton1_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageB     Response.Redirect("PaginaDestino.aspx")     End Sub  Observación: El método sobrecargado Redirect(URL, Boolean) tiene un parámetro boolean que especifica si se termina la ejecución de la  página actual: True, o no : False. Si se especifica True o si se utiliza el método Redirect especificando solamente la URL de destino, se  producirá una excepción del tipo ThreadAbortException, que indica el término de la ejecución de la página que origina la navegación. Se  debe considerar este comentario cuando se tiene sentencias Redirect dentro de bloques Try, ya que la excepción producida por el  método Redirect puede no ser esperada en el flujo de la aplicación.   c) Utilizando el método Server. Transfer    Solo sirve para navegar entre páginas aspx. Este método termina la ejecución del Web Form que origina la llamada y navega hasta la  página aspx de destino. Si consideramos el comentario anterior, la utilización de este método, siempre va a generar una excepción del tipo  ThreadAbortException, ya que termina la ejecución de la página de origen. La sintaxis es la misma que para el método Redirect:   Private Sub ImageButton1_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles 

EventArgs) Handles BtnServerEx.UI.    d) Utilizando el método Server.EventArgs) Handles Button1. del lado del cliente definida en un bloque script. TextWriter)   En el ejemplo siguiente se escribe el contenido de la página de destino en la página de origen utilizando Response.Form       Label1. es  necesario incorporar la directiva de página EnableViewStateMac=”false” para deshabilitar el hashing del ViewState. True)     End Sub    'PaginaDestino.aspx" .ImageButton1.   e) Utilizando el método de script del lado del cliente Window. a través de este método es posible  controlar el aspecto y otras características propias de la ventana de Internet Explorer. ByVal e As System. Este método agrega secuencias de comandos al final de la  página html.Write(pContenidoPaginaDestino)    End Sub  Observación: Al igual que para el caso de utilizar Server.   Existen varios métodos para llamar script del lado del cliente desde código del lado del servidor.   Otra técnica (no se muestra en este artículo). de lo contrario se producirá una excepción.Click            Server.aspx     Private Sub Page_Load(ByVal sender As System. lo que hará que este se ejecute como si siempre hubiese estado allí.Item("TextBox1")     End Sub  Observación: Debe introducirse la directiva EnableViewStateMac=”false” en la página de origen para deshabilitar el hashing del  ViewState.Specialized.aspx’);").Attributes. ByVal e As System. abrir el contenido en una nueva  ventana o en una ventana tipo ‘popup’.IO.Text = pCollectionForm.      pContenidoPaginaDestino)  Response. Ver el ejemplo más adelante. La ejecución de la página de destino comienza sin detener la ejecución de la página que  originó la navegación. Esto permite que podamos acceder a los valores del ViewState de la página de  origen desde la página de destino.Web.NameValueCollection       pCollectionForm = Request.Open    Esta técnica.StringWriter      Server.Add ("onclick".aspx  Private Sub ImageButton1_Click(ByVal sender As System.   Desde los objetos del lado del servidor no es posible controlar estas características ya que este objeto de Internet Explorer solo existe en  el lado del cliente (DOM).EventArgs) Handles MyBase.Execute("PaginaTres.aspx")     End Sub  La versión sobrecargada de este método. En el  ejemplo de más abajo.  'PaginaOrigen.Object. mostraré un método para  agregar código de cliente en la página html utilizando RegisterStartupScript. como por ejemplo.Click        Dim pContenidoPaginaDestino As New System.Collections.Object. "javascript:AbrePagina('PaginaDestino. En esta ocasión. permite navegar a páginas html o aspx. sería establecer el valor del atributo onclick de un control html desde código del servidor:  Control.Object. Lo que hará el código es agregar el script al  final de la página de origen. ByVal e As System. para agregar el nombre de una función. Como se trata de un script del lado del cliente.aspx". Este método permite desplegar el contenido de la página de destino en una sección de la página de origen.Click                                                          .Object.Execute   Solo funciona para navegar entre páginas aspx. ByVal e As System.Load       Dim pCollectionForm As System.Transfer("NuevaPagina.Transfer("PaginaDestino.ImageClickEventArgs) Handles ImageB    Server. se muestra el uso de esta técnica utilizando el método sobrecargado Server.   1­ Ejemplo utilizando RegisterStartupScript  Lo que haremos. incorpora un valor booleano para especificar si se conservan las colecciones QueryString y  Form luego del término de la ejecución de la página actual.   La página de origen contiene un control de servidor TextBox llamado Textbox1.  El valor de este cuadro sw texto es obtenido desde la  página de destino y mostrado en el control Label1. en el ejemplo  AbrePagina .Execute(String.   Private Sub Button1_Click(ByVal sender As System. será agregar el script del cliente en el evento clic de un control asp Button.Write   Private Sub BtnServerEx_Click(ByVal sender As System.Transfer y mantener la los datos de la estado de la página de origen.

Redirect o con Window.top=250" & Chr(34)        pClientScript += " </script>"                                         RegisterStartupScript("PaginaDestino".open "PaginaTres. necesariamente tendremos que utilizar una técnica que considere código del lado del cliente.ascx”) Si bien en la mayoría de los casos se podrá resolver la navegación con  Response. se tiene una sola página donde se van cargando los distintos  formularios (controles . Siempre estas técnicas se  podrán complementar con otras alternativas que pueden dar un aspecto más profesional a nuestros desarrollos y que dependen del ingenio  del desarrollador."_blank".aspx".zip ­ 44.Open.8 KB    ."width=510. pClientScript)  End Sub  El código anterior.  Con esta técnica.Redirect(“default. Por ejemplo. existen diferentes maneras de navegar entre formularios web. Por ejemplo podríamos implementar un método de navegación con controles de usuario (.Redirect (se incluye el código en los ejemplos). El usar una u otra técnica dependerá del escenario que  estemos enfrentando.height=360.aspx"."_blank"." & Chr(34) & "width=510.left=200. es recomendable estudiar y practicar con las técnicas antes descritas.top=250" </SCRIPT>   <script language=vbScript>  'window." & Chr(34) & "_blank" & Chr(34) & ".aspx" & Chr(34) & _        ".height=360.             Dim pClientScript As String          pClientScript = "<script language=vbScript> "        pClientScript += " window. ya que en ciertas  situaciones nos ayudarán a resolver nuestro problema de manera más eficiente. genera el siguiente código en la página html antes de la etiqueta </FORM>:  <SCRIPT language=vbScript> 'window.height=360.top=250" </script>  Conclusiones   Como se puede ver.    Fichero con el código de ejemplo: lveliz_TecnicasNavegacionNET.aspx?Pagina=Pagina1.ascx) en un control PlaceHolder dependiendo por ejemplo de una parámetro que se pase en la llamada:  Response.ascx) más el método  Response."width=510.left=200. si nuestro requerimiento involucra manejar las características de la ventana a la que estamos  navegando.open "Pagina5.left=200.open " & Chr(34) & "Pagina5.