SlideShare una empresa de Scribd logo
1 de 7
TRANSFERENCIA DE VARIABLES POR URL
Cómo: Redirigir los usuarios a otra página
En determinadas circunstancias, es posible que desee redirigir a los usuarios de una página
Web ASP.NET a otra página Web. Por ejemplo, como parte de un formulario con múltiples
páginas.
Existen varias maneras de redirigir páginas, como las siguientes:
Configurar la página para que envíe a otra página En este escenario, el usuario
hace clic en un botón que se ha configurado para que redirija el explorador a una
página diferente. Este escenario es útil para los formularios con múltiples páginas. Sin
embargo, requiere interacción con el usuario. Para obtener información detallada.
Utilizar dinámicamente el explorador En este escenario, se envía un comando al
explorador del usuario que hace que el explorador recupere otra página. Esto le
permite redirigir a otra página mediante programación. Sin embargo, la redirección
produce una nueva solicitud (de tipo HTTP GET) y los datos expuestos de la página de
origen se pierden.
Utilizar dinámicamente un método de servidor En este escenario, el servidor simplemente
transfiere el contexto a otra página. La ventaja es que puede compartir información de
contexto de página entre páginas. El inconveniente es que el explorador del usuario no tiene
conocimiento de la transferencia, por lo que no se actualiza su historial. Si el usuario actualiza
la página, pueden producirse resultados inesperados. Para obtener información detallada
sobre cómo compartir el contexto de página durante una transferencia de servidor.
Para redirigir a un usuario a otra página mediante el explorador
1. Establezca la propiedad BufferOutput del objeto Response en true.
2. Llame al método Redirect del objeto Response y pásele la dirección URL de la página a
la que desea redirigir a los usuarios.
En el ejemplo de código siguiente se muestra cómo redirigir una página basándose en
el contenido de una variable local,UserLanguage, que se ha establecido en otra parte.
VB
Response.BufferOutput = True
IfUserLanguage = "English"Then
Response.Redirect("http://www.microsoft.com/gohere/look.htm")
ElseIfUserLanguage = "Deutsch"Then
Response.Redirect("http://www.microsoft.com/gohere/look_deu.htm")
ElseIfUserLanguage = "Español"Then
Response.Redirect("http://www.microsoft.com/gohere/look_esp.htm")
EndIf
Para redirigir a los usuarios a otra página utilizando un método de servidor
Llame al método Transfer y pásele el nombre de la página a la que desea redirigir a los
usuarios.
En el ejemplo de código siguiente se muestra cómo realizar la redirección a otra
página.
VB
ProtectedSub Button1_Click(ByVal sender AsSystem.Object, _
ByVal e AsSystem.EventArgs) Handles Button1.Click
Server.Transfer("Page2.aspx", True)
EndSub
Si en la aplicación se redirige de una página Web ASP.NET a otra, a menudo deseará pasar
información de la página de origen a la de destino. Por ejemplo, imagine que tiene una
página cuyos usuarios pueden seleccionar los elementos que desean adquirir. Cuando los
usuarios envían la página, desea llamar a otra página que procese la información introducida
por el usuario.
La información se puede pasar entre páginas de varias formas, algunas de las cuales
dependen de cómo se lleve a cabo la redirección. Entre las opciones posibles se encuentran
las siguientes:
Utilice una cadena de consulta que anexe la información a la dirección URL de la
página de destino. Puede emplear este método cuando utilice un
control HyperLink para diseñar la exploración de una página o cuando realice la
redirección mediante programación a otra página mediante el método Redirect.
El traspaso de valores en cadenas de consulta funciona aunque las páginas no se
encuentren en la misma aplicación Web; también funciona si desea pasar la
información a una página que no es una página Web ASP.NET. Si la página de destino
es una página Web ASP.NET, puede leer el valor de la cadena de consulta a partir de la
propiedad QueryString del objeto HttpRequest.
Nota
Cuando utilice cadenas de consulta no pase nunca datos confidenciales, ya que los
usuarios podrán verlos y modificarlos fácilmente, lo que representa un riesgo de
seguridad potencial.
Utilice el estado de sesión para almacenar información a la podrán tener acceso todas
las páginas Web ASP.NET de la aplicación actual. Sin embargo, con este método se
consume memoria del servidor y la información permanece almacenada hasta que
finaliza la sesión, lo que puede suponer una sobrecarga mayor de la deseada
simplemente para pasar información a la página siguiente. Para obtener información
detallada.
En la página de destino, lea directamente en la página de origen los valores de los
controles y los valores de las propiedades públicas. Esta estrategia funciona en dos
situaciones: cuando la página de origen envía mensajes cruzados a la página de
destino y cuando se llama al métodoTransfer para transferir la ejecución de la página
de origen a la página de destino en el servidor. En este tema se describe la estrategia
de leer los valores directamente de la página de origen.
Obtener los valores de las propiedades públicas de la página de origen
Si va a diseñar la página de origen expresamente para compartir información con las páginas
de destino y ambas son páginas Web ASP.NET, puede agregar a la página de origen las
propiedades públicas que exponen la información que desea que compartan las páginas. A
continuación, podrá leer los valores de las propiedades en las páginas de destino.
Nota
Para poder leer las propiedades de la página de origen en la página de destino es necesario
que ambas páginas pertenezcan a la misma aplicación Web.
Para obtener los valores de las propiedades públicas de la página de origen
1. En la página de origen, cree una o varias propiedades públicas.
En el ejemplo de código siguiente se muestra una propiedad
denominada CurrentCity que expone el valor de un
controlTextBox denominado textCity.
VB
PublicReadOnlyPropertyCurrentCity() AsString
Get
ReturntextCity.Text
EndGet
EndProperty
C#
public String CurrentCity
{
get
{
returntextCity.Text;
}
}
Nota
Las propiedades de la página de origen, que se crean principalmente para exponer valores
del envío de información entre páginas, suelen ser propiedades de sólo lectura. Aunque la
página de origen puede contener propiedades públicas de lectura y escritura, generalmente
no tiene sentido establecer una propiedad de la página de origen desde la página de
destino, ya que no se conservará el valor.
2. En la página de destino, agregue una directiva de página @ PreviousPageType que
señale a la página de origen.
En el ejemplo de código siguiente se muestra una directiva PreviousPageType que
hace referencia a una página de origen denominada SourcePage.aspx.
<%@ PreviousPageTypeVirtualPath="~/SourcePage.aspx" %>
La directiva PreviousPageType hace que la propiedad PreviousPage de la página se
asigne como tipo a la clase de la página de origen.
3. En el código de la página de destino, utilice los miembros con establecimiento
inflexible de tipos de la propiedad PreviousPagepara leer las propiedades del código
fuente.
En el ejemplo de código siguiente se lee el valor de la propiedad CurrentCity definido
en la página de origen.
VB
Label1.Text = PreviousPage.CurrentCity
Obtener información de los controles de la página de origen en la misma
aplicación
Si las páginas de origen y destino son páginas Web ASP.NET y pertenecen a la misma
aplicación Web, puede leer los valores de los controles en la página de origen mientras está
en la página de destino. Esta estrategia se puede utilizar si la página de origen no expone
propiedades públicas que contengan la información necesaria.
Para obtener los valores de los controles de la página de origen en la misma aplicación
En la página de destino, obtenga una referencia a la página de origen mediante la
propiedad PreviousPage de la página de destino y, a continuación, llame al
método FindControl para obtener una referencia al control deseado.
En el ejemplo de código siguiente se obtiene el valor del control TextBox1 de la página
de origen y se muestra en el control denominado Label1:
VB
IfNotPage.PreviousPageIsNothingThen
DimSourceTextBoxAsTextBox
SourceTextBox = CType(PreviousPage.FindControl("TextBox1"), _
TextBox)
IfNotSourceTextBoxIsNothingThen
Label1.Text = SourceTextBox.Text
EndIf
EndIf
Nota
El método FindControl busca el control en el contenedor de nombres actual. Si el control
que busca se encuentra en otro control (generalmente, dentro de una plantilla), primero
debe obtener una referencia al contenedor y, a continuación, buscar en él el control que
desea obtener.
Obtener la información expuesta por la página de origen en otra aplicación
Si las páginas de origen y destino no pertenecen a la misma aplicación Web, puede leer los
valores expuestos por la página de origen en la página de destino. Esta técnica también es
válida si la página de destino es una página Web ASP.NET y la de origen no lo es. Tenga en
cuenta que sólo puede obtener los valores expuestos; no puede leer los valores de los
controles arbitrarios de la página.
Para obtener los valores de controles de la página de origen en otra aplicación
En la página de destino, lea la colección Form, que devuelve un diccionario de pares de
nombre y valor, con un par para cada valor expuesto.
En el ejemplo de código siguiente se muestra el identificador y el valor de cada uno de
los controles expuestos en la página de origen, así como los valores expuestos en una
etiqueta denominada Label1.
Nota
Entre la información expuesta en las páginas Web ASP.NET se encuentran los valores
de los campos ocultos,
como__VIEWSTATE, __EVENTTARGET y __EVENTARGUMENT, que se utilizan para
el procesamiento interno de la página. En el ejemplo de código siguiente se
excluyen los valores de los campos expuestos cuyo nombre comienza por doble
subrayado (__).
VB
SubPage_Load(ByVal sender AsObject, ByVal e AsSystem.EventArgs) _
HandlesMe.Load
DimdisplayValuesAsNewStringBuilder()
DimpostedValuesAsNameValueCollection = Request.Form
DimnextKeyAsString
ForiAsInteger = 0 TopostedValues.AllKeys.Length - 1
nextKey = postedValues.AllKeys(i)
IfnextKey.Substring(0, 2) <>"__"Then
displayValues.Append("<br>")
displayValues.Append(nextKey)
displayValues.Append(" = ")
displayValues.Append(postedValues(i))
EndIf
Next
Label1.Text = displayValues.ToString()
EndSub
TRANSFERENCIA DE VARIABLES POR FORMULARIO
La necesidad y utilidad del método session para transferir variables
En los programas que hemos visto hasta ahora, hemos utilizado variables que solo existían en el
archivo que era ejecutado. Cuando cargábamos otra página distinta, los valores de estas variables se
perdían a menos que nos tomásemos la molestia de pasarlos por la URL o inscribirlos en las cookies o
en un formulario para su posterior explotación. Estos métodos, aunque útiles, no son todo lo prácticos
que podrían en determinados casos en los que la variable que queremos conservar ha de ser utilizada
en varios scripts diferentes y distantes los unos de los otros.
Podríamos pensar que ese problema puede quedar resuelto con las cookies ya que se trata de
variables que pueden ser invocadas en cualquier momento. El problema, ya lo hemos dicho, es que las
cookies no son aceptadas ni por la totalidad de los usuarios ni por la totalidad de los navegadores lo
cual implica que una aplicación que se sirviera de las cookies para pasar variables de un archivo a otro
no sería 100% infalible.
Nos resulta pues necesario el poder declarar ciertas variables que puedan ser reutilizadas tantas veces
como queramos dentro de una misma sesión. Imaginemos un sitio multilingüe en el que cada vez que
queremos imprimir un mensaje en cualquier página necesitamos saber en qué idioma debe hacerse.
Podríamos introducir un script identificador de la lengua del navegador en cada uno de los archivos o
bien declarar una variable que fuese valida para toda la sesión y que tuviese como valor el idioma
reconocido en un primer momento.
Estas variables que son válidas durante una sesión y que luego son "olvidadas" son definidas con el
objeto Session de la siguiente forma:
Session("nombre de la variable") = valor de la variable
Una vez definida, la variable Session, será almacenada en memoria y podrá ser empleada en cualquier
script del sitio web.
La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir que si en 20
minutos no realizamos ninguna acción, el servidor dará por finalizada la sesión y todas las variables
Session serán abandonadas. Esta duración puede ser modificada con la propiedad Timeout:
Session.Timeout = n° de minutos que queramos que dure
Una forma de borrar las variables Session sin necesidad de esperara que pase este plazo es a partir del
método Abandon:
Session.Abandon
De este modo todas las variables Session serán borradas y la sesión se dará por finalizada. Este
método puede resultar practico cuando estemos haciendo pruebas con el script y necesitemos
reinicializar las variables.
Lo que se suele hacer es crear un archivo en el que se borran las cookies y se abandona la sesión. Este
archivo será ejecutado cuando queramos hacer borrón y cuenta nueva

Más contenido relacionado

Destacado

Mulheres antes de deitar
Mulheres antes de deitarMulheres antes de deitar
Mulheres antes de deitarSoproLeve
 
Pomona Millikan Building: Math, Physics & Astronomy
Pomona Millikan Building:  Math, Physics & AstronomyPomona Millikan Building:  Math, Physics & Astronomy
Pomona Millikan Building: Math, Physics & Astronomyscott shell
 
Perfil da startup brasileira - by MaisStartup
Perfil da startup brasileira - by MaisStartupPerfil da startup brasileira - by MaisStartup
Perfil da startup brasileira - by MaisStartupStartupi
 
Up global - fomentando ecossistema de startups
Up global - fomentando ecossistema de startupsUp global - fomentando ecossistema de startups
Up global - fomentando ecossistema de startupsStartupi
 
Gerenciamento de Projetos & Startups
Gerenciamento de Projetos & StartupsGerenciamento de Projetos & Startups
Gerenciamento de Projetos & StartupsGUGP SUCESU-RS
 
4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...
4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...
4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...qualidatavix
 
Servicios de apoyo nee
Servicios de apoyo neeServicios de apoyo nee
Servicios de apoyo neemokhetyta
 
Mkt de serviços e necessidades relacionais
Mkt de serviços e necessidades relacionaisMkt de serviços e necessidades relacionais
Mkt de serviços e necessidades relacionaisDaniel Antunes
 
2308201114334062 codigo de_conduta
2308201114334062 codigo de_conduta2308201114334062 codigo de_conduta
2308201114334062 codigo de_condutaSandra Dória
 
Presentacion del programa sistemas
Presentacion del programa sistemasPresentacion del programa sistemas
Presentacion del programa sistemasIbeth Parejo
 
Apresentação Grupo Pro RH
Apresentação Grupo Pro RHApresentação Grupo Pro RH
Apresentação Grupo Pro RHgrupoprorh
 
Mecshow 2014 shell flávio rodrigues
Mecshow 2014   shell flávio rodriguesMecshow 2014   shell flávio rodrigues
Mecshow 2014 shell flávio rodriguesglenmilanez
 
Apresentação serviços employer_2014
Apresentação serviços employer_2014Apresentação serviços employer_2014
Apresentação serviços employer_2014EmployerRH
 
el impacto de la tecnología en las empresas.
el impacto de la tecnología en las empresas.el impacto de la tecnología en las empresas.
el impacto de la tecnología en las empresas.rosilesprado
 

Destacado (20)

Mulheres antes de deitar
Mulheres antes de deitarMulheres antes de deitar
Mulheres antes de deitar
 
Pomona Millikan Building: Math, Physics & Astronomy
Pomona Millikan Building:  Math, Physics & AstronomyPomona Millikan Building:  Math, Physics & Astronomy
Pomona Millikan Building: Math, Physics & Astronomy
 
Perfil da startup brasileira - by MaisStartup
Perfil da startup brasileira - by MaisStartupPerfil da startup brasileira - by MaisStartup
Perfil da startup brasileira - by MaisStartup
 
Up global - fomentando ecossistema de startups
Up global - fomentando ecossistema de startupsUp global - fomentando ecossistema de startups
Up global - fomentando ecossistema de startups
 
Gerenciamento de Projetos & Startups
Gerenciamento de Projetos & StartupsGerenciamento de Projetos & Startups
Gerenciamento de Projetos & Startups
 
4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...
4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...
4º FastShow - Meio de Informação? Comunicação? Útil? Inútil? Só fofoca e best...
 
Desafios de Recrutamento e Seleção
Desafios de Recrutamento e SeleçãoDesafios de Recrutamento e Seleção
Desafios de Recrutamento e Seleção
 
Servicios de apoyo nee
Servicios de apoyo neeServicios de apoyo nee
Servicios de apoyo nee
 
Fofoca[Carol]
Fofoca[Carol]Fofoca[Carol]
Fofoca[Carol]
 
Mkt de serviços e necessidades relacionais
Mkt de serviços e necessidades relacionaisMkt de serviços e necessidades relacionais
Mkt de serviços e necessidades relacionais
 
20110902 manualgestorsupervisor
20110902 manualgestorsupervisor20110902 manualgestorsupervisor
20110902 manualgestorsupervisor
 
2308201114334062 codigo de_conduta
2308201114334062 codigo de_conduta2308201114334062 codigo de_conduta
2308201114334062 codigo de_conduta
 
Presentacion del programa sistemas
Presentacion del programa sistemasPresentacion del programa sistemas
Presentacion del programa sistemas
 
Fofoca Especial
Fofoca EspecialFofoca Especial
Fofoca Especial
 
Apresentação Grupo Pro RH
Apresentação Grupo Pro RHApresentação Grupo Pro RH
Apresentação Grupo Pro RH
 
Mecshow 2014 shell flávio rodrigues
Mecshow 2014   shell flávio rodriguesMecshow 2014   shell flávio rodrigues
Mecshow 2014 shell flávio rodrigues
 
#2 StartuPapo
#2 StartuPapo#2 StartuPapo
#2 StartuPapo
 
#1 StartuPapo
#1 StartuPapo#1 StartuPapo
#1 StartuPapo
 
Apresentação serviços employer_2014
Apresentação serviços employer_2014Apresentação serviços employer_2014
Apresentação serviços employer_2014
 
el impacto de la tecnología en las empresas.
el impacto de la tecnología en las empresas.el impacto de la tecnología en las empresas.
el impacto de la tecnología en las empresas.
 

Similar a Practica prog pag_dinam

Asp.Net Session And Query String
Asp.Net Session And Query StringAsp.Net Session And Query String
Asp.Net Session And Query StringJuan Pablo Ibañez
 
Ciclo De Vida De Una Página ASP.NET
Ciclo De Vida De Una Página ASP.NETCiclo De Vida De Una Página ASP.NET
Ciclo De Vida De Una Página ASP.NETJuan Pablo Ibañez
 
Tutorial de ASP
Tutorial de ASPTutorial de ASP
Tutorial de ASPLeo_Mini
 
Reporte prog web
Reporte prog webReporte prog web
Reporte prog webJc Lopez
 
Aplica los fundamentos de programacion web
Aplica los fundamentos de programacion webAplica los fundamentos de programacion web
Aplica los fundamentos de programacion webmiguel9728
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptosXstremsX
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkitpabloesp
 
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSPTEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSPAnyeni Garay
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl googleSeveredDRA
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones webFelipe
 
Extensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío SantiagoExtensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío Santiago2008PA2Info3
 

Similar a Practica prog pag_dinam (20)

Asp.net
Asp.netAsp.net
Asp.net
 
Asp.net
Asp.netAsp.net
Asp.net
 
Asp.Net Session And Query String
Asp.Net Session And Query StringAsp.Net Session And Query String
Asp.Net Session And Query String
 
Asp
AspAsp
Asp
 
2 web-forms
2 web-forms2 web-forms
2 web-forms
 
2 web-forms
2 web-forms2 web-forms
2 web-forms
 
2 web-forms
2 web-forms2 web-forms
2 web-forms
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Ciclo De Vida De Una Página ASP.NET
Ciclo De Vida De Una Página ASP.NETCiclo De Vida De Una Página ASP.NET
Ciclo De Vida De Una Página ASP.NET
 
Tutorial de ASP
Tutorial de ASPTutorial de ASP
Tutorial de ASP
 
Reporte prog web
Reporte prog webReporte prog web
Reporte prog web
 
Aplica los fundamentos de programacion web
Aplica los fundamentos de programacion webAplica los fundamentos de programacion web
Aplica los fundamentos de programacion web
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptos
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSPTEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
TEMA Nº 4: GENERACIÓN DE CONTENIDO DINÁMICO CON JSP
 
Formularios web
Formularios webFormularios web
Formularios web
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl google
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones web
 
Extensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío SantiagoExtensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío Santiago
 

Practica prog pag_dinam

  • 1. TRANSFERENCIA DE VARIABLES POR URL Cómo: Redirigir los usuarios a otra página En determinadas circunstancias, es posible que desee redirigir a los usuarios de una página Web ASP.NET a otra página Web. Por ejemplo, como parte de un formulario con múltiples páginas. Existen varias maneras de redirigir páginas, como las siguientes: Configurar la página para que envíe a otra página En este escenario, el usuario hace clic en un botón que se ha configurado para que redirija el explorador a una página diferente. Este escenario es útil para los formularios con múltiples páginas. Sin embargo, requiere interacción con el usuario. Para obtener información detallada. Utilizar dinámicamente el explorador En este escenario, se envía un comando al explorador del usuario que hace que el explorador recupere otra página. Esto le permite redirigir a otra página mediante programación. Sin embargo, la redirección produce una nueva solicitud (de tipo HTTP GET) y los datos expuestos de la página de origen se pierden. Utilizar dinámicamente un método de servidor En este escenario, el servidor simplemente transfiere el contexto a otra página. La ventaja es que puede compartir información de contexto de página entre páginas. El inconveniente es que el explorador del usuario no tiene conocimiento de la transferencia, por lo que no se actualiza su historial. Si el usuario actualiza la página, pueden producirse resultados inesperados. Para obtener información detallada sobre cómo compartir el contexto de página durante una transferencia de servidor. Para redirigir a un usuario a otra página mediante el explorador 1. Establezca la propiedad BufferOutput del objeto Response en true. 2. Llame al método Redirect del objeto Response y pásele la dirección URL de la página a la que desea redirigir a los usuarios. En el ejemplo de código siguiente se muestra cómo redirigir una página basándose en el contenido de una variable local,UserLanguage, que se ha establecido en otra parte. VB Response.BufferOutput = True IfUserLanguage = "English"Then Response.Redirect("http://www.microsoft.com/gohere/look.htm") ElseIfUserLanguage = "Deutsch"Then Response.Redirect("http://www.microsoft.com/gohere/look_deu.htm") ElseIfUserLanguage = "Español"Then Response.Redirect("http://www.microsoft.com/gohere/look_esp.htm") EndIf Para redirigir a los usuarios a otra página utilizando un método de servidor
  • 2. Llame al método Transfer y pásele el nombre de la página a la que desea redirigir a los usuarios. En el ejemplo de código siguiente se muestra cómo realizar la redirección a otra página. VB ProtectedSub Button1_Click(ByVal sender AsSystem.Object, _ ByVal e AsSystem.EventArgs) Handles Button1.Click Server.Transfer("Page2.aspx", True) EndSub Si en la aplicación se redirige de una página Web ASP.NET a otra, a menudo deseará pasar información de la página de origen a la de destino. Por ejemplo, imagine que tiene una página cuyos usuarios pueden seleccionar los elementos que desean adquirir. Cuando los usuarios envían la página, desea llamar a otra página que procese la información introducida por el usuario. La información se puede pasar entre páginas de varias formas, algunas de las cuales dependen de cómo se lleve a cabo la redirección. Entre las opciones posibles se encuentran las siguientes: Utilice una cadena de consulta que anexe la información a la dirección URL de la página de destino. Puede emplear este método cuando utilice un control HyperLink para diseñar la exploración de una página o cuando realice la redirección mediante programación a otra página mediante el método Redirect. El traspaso de valores en cadenas de consulta funciona aunque las páginas no se encuentren en la misma aplicación Web; también funciona si desea pasar la información a una página que no es una página Web ASP.NET. Si la página de destino es una página Web ASP.NET, puede leer el valor de la cadena de consulta a partir de la propiedad QueryString del objeto HttpRequest. Nota Cuando utilice cadenas de consulta no pase nunca datos confidenciales, ya que los usuarios podrán verlos y modificarlos fácilmente, lo que representa un riesgo de seguridad potencial. Utilice el estado de sesión para almacenar información a la podrán tener acceso todas las páginas Web ASP.NET de la aplicación actual. Sin embargo, con este método se consume memoria del servidor y la información permanece almacenada hasta que finaliza la sesión, lo que puede suponer una sobrecarga mayor de la deseada simplemente para pasar información a la página siguiente. Para obtener información detallada.
  • 3. En la página de destino, lea directamente en la página de origen los valores de los controles y los valores de las propiedades públicas. Esta estrategia funciona en dos situaciones: cuando la página de origen envía mensajes cruzados a la página de destino y cuando se llama al métodoTransfer para transferir la ejecución de la página de origen a la página de destino en el servidor. En este tema se describe la estrategia de leer los valores directamente de la página de origen. Obtener los valores de las propiedades públicas de la página de origen Si va a diseñar la página de origen expresamente para compartir información con las páginas de destino y ambas son páginas Web ASP.NET, puede agregar a la página de origen las propiedades públicas que exponen la información que desea que compartan las páginas. A continuación, podrá leer los valores de las propiedades en las páginas de destino. Nota Para poder leer las propiedades de la página de origen en la página de destino es necesario que ambas páginas pertenezcan a la misma aplicación Web. Para obtener los valores de las propiedades públicas de la página de origen 1. En la página de origen, cree una o varias propiedades públicas. En el ejemplo de código siguiente se muestra una propiedad denominada CurrentCity que expone el valor de un controlTextBox denominado textCity. VB PublicReadOnlyPropertyCurrentCity() AsString Get ReturntextCity.Text EndGet EndProperty C# public String CurrentCity { get { returntextCity.Text; } } Nota
  • 4. Las propiedades de la página de origen, que se crean principalmente para exponer valores del envío de información entre páginas, suelen ser propiedades de sólo lectura. Aunque la página de origen puede contener propiedades públicas de lectura y escritura, generalmente no tiene sentido establecer una propiedad de la página de origen desde la página de destino, ya que no se conservará el valor. 2. En la página de destino, agregue una directiva de página @ PreviousPageType que señale a la página de origen. En el ejemplo de código siguiente se muestra una directiva PreviousPageType que hace referencia a una página de origen denominada SourcePage.aspx. <%@ PreviousPageTypeVirtualPath="~/SourcePage.aspx" %> La directiva PreviousPageType hace que la propiedad PreviousPage de la página se asigne como tipo a la clase de la página de origen. 3. En el código de la página de destino, utilice los miembros con establecimiento inflexible de tipos de la propiedad PreviousPagepara leer las propiedades del código fuente. En el ejemplo de código siguiente se lee el valor de la propiedad CurrentCity definido en la página de origen. VB Label1.Text = PreviousPage.CurrentCity Obtener información de los controles de la página de origen en la misma aplicación Si las páginas de origen y destino son páginas Web ASP.NET y pertenecen a la misma aplicación Web, puede leer los valores de los controles en la página de origen mientras está en la página de destino. Esta estrategia se puede utilizar si la página de origen no expone propiedades públicas que contengan la información necesaria. Para obtener los valores de los controles de la página de origen en la misma aplicación En la página de destino, obtenga una referencia a la página de origen mediante la propiedad PreviousPage de la página de destino y, a continuación, llame al método FindControl para obtener una referencia al control deseado. En el ejemplo de código siguiente se obtiene el valor del control TextBox1 de la página de origen y se muestra en el control denominado Label1: VB IfNotPage.PreviousPageIsNothingThen DimSourceTextBoxAsTextBox SourceTextBox = CType(PreviousPage.FindControl("TextBox1"), _ TextBox) IfNotSourceTextBoxIsNothingThen
  • 5. Label1.Text = SourceTextBox.Text EndIf EndIf Nota El método FindControl busca el control en el contenedor de nombres actual. Si el control que busca se encuentra en otro control (generalmente, dentro de una plantilla), primero debe obtener una referencia al contenedor y, a continuación, buscar en él el control que desea obtener. Obtener la información expuesta por la página de origen en otra aplicación Si las páginas de origen y destino no pertenecen a la misma aplicación Web, puede leer los valores expuestos por la página de origen en la página de destino. Esta técnica también es válida si la página de destino es una página Web ASP.NET y la de origen no lo es. Tenga en cuenta que sólo puede obtener los valores expuestos; no puede leer los valores de los controles arbitrarios de la página. Para obtener los valores de controles de la página de origen en otra aplicación En la página de destino, lea la colección Form, que devuelve un diccionario de pares de nombre y valor, con un par para cada valor expuesto. En el ejemplo de código siguiente se muestra el identificador y el valor de cada uno de los controles expuestos en la página de origen, así como los valores expuestos en una etiqueta denominada Label1. Nota Entre la información expuesta en las páginas Web ASP.NET se encuentran los valores de los campos ocultos, como__VIEWSTATE, __EVENTTARGET y __EVENTARGUMENT, que se utilizan para el procesamiento interno de la página. En el ejemplo de código siguiente se excluyen los valores de los campos expuestos cuyo nombre comienza por doble subrayado (__). VB SubPage_Load(ByVal sender AsObject, ByVal e AsSystem.EventArgs) _ HandlesMe.Load DimdisplayValuesAsNewStringBuilder() DimpostedValuesAsNameValueCollection = Request.Form
  • 6. DimnextKeyAsString ForiAsInteger = 0 TopostedValues.AllKeys.Length - 1 nextKey = postedValues.AllKeys(i) IfnextKey.Substring(0, 2) <>"__"Then displayValues.Append("<br>") displayValues.Append(nextKey) displayValues.Append(" = ") displayValues.Append(postedValues(i)) EndIf Next Label1.Text = displayValues.ToString() EndSub TRANSFERENCIA DE VARIABLES POR FORMULARIO La necesidad y utilidad del método session para transferir variables En los programas que hemos visto hasta ahora, hemos utilizado variables que solo existían en el archivo que era ejecutado. Cuando cargábamos otra página distinta, los valores de estas variables se perdían a menos que nos tomásemos la molestia de pasarlos por la URL o inscribirlos en las cookies o en un formulario para su posterior explotación. Estos métodos, aunque útiles, no son todo lo prácticos que podrían en determinados casos en los que la variable que queremos conservar ha de ser utilizada en varios scripts diferentes y distantes los unos de los otros. Podríamos pensar que ese problema puede quedar resuelto con las cookies ya que se trata de variables que pueden ser invocadas en cualquier momento. El problema, ya lo hemos dicho, es que las cookies no son aceptadas ni por la totalidad de los usuarios ni por la totalidad de los navegadores lo cual implica que una aplicación que se sirviera de las cookies para pasar variables de un archivo a otro no sería 100% infalible. Nos resulta pues necesario el poder declarar ciertas variables que puedan ser reutilizadas tantas veces como queramos dentro de una misma sesión. Imaginemos un sitio multilingüe en el que cada vez que queremos imprimir un mensaje en cualquier página necesitamos saber en qué idioma debe hacerse. Podríamos introducir un script identificador de la lengua del navegador en cada uno de los archivos o bien declarar una variable que fuese valida para toda la sesión y que tuviese como valor el idioma reconocido en un primer momento. Estas variables que son válidas durante una sesión y que luego son "olvidadas" son definidas con el objeto Session de la siguiente forma: Session("nombre de la variable") = valor de la variable Una vez definida, la variable Session, será almacenada en memoria y podrá ser empleada en cualquier
  • 7. script del sitio web. La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir que si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada la sesión y todas las variables Session serán abandonadas. Esta duración puede ser modificada con la propiedad Timeout: Session.Timeout = n° de minutos que queramos que dure Una forma de borrar las variables Session sin necesidad de esperara que pase este plazo es a partir del método Abandon: Session.Abandon De este modo todas las variables Session serán borradas y la sesión se dará por finalizada. Este método puede resultar practico cuando estemos haciendo pruebas con el script y necesitemos reinicializar las variables. Lo que se suele hacer es crear un archivo en el que se borran las cookies y se abandona la sesión. Este archivo será ejecutado cuando queramos hacer borrón y cuenta nueva