You are on page 1of 3

el Guille, la Web del Visual Basic, C#, .NET y ms...

Lo+WinFX.NETADO.NETASP.NETCmo...ColaboraVB6A P IHTMLVistaLinksForos

Tusplanesdealojamiento(hosting) con.NETFramework4.0:ASP.NET4.0yMVC3 Contrtalosen indicando"elGuille"

TcnicasdeNavegacionentreWebFormsASP.NET
Fecha:30/Abr/2005(24/04/2005) Autor:LuisVliz(lveliz@mundoedwards.com)

Lasofertas delGuille para alojamiento (hosting)de sitiosweb, seguramente losmejores preciosdel

Introduccin UnaspectoimportanteenlaconstruccindeaplicacionesWebeslanavegacinentrapginasyelusodelink,queenconjuntounenlas pginasdenuestraaplicacinhaciendodeestauntodo.Delocontrariotendramospginasaisladasquenosepodrancomunicarentresi. Enesteartculo,revisaremosdistintastcnicasdenavegacintantoconcdigoaniveldelservidorcomodelcliente. ConocerestastcnicasserdegranutilidadenelmomentodedisearunaaplicacinWEB. Tcnicasdenavegacinentrepginas a)NavegacinconelcontrolHiperLink Estatcnicapermitenavegarhastaotrapginahtmlcomoaspyaspx. Estecontrolnoproporcionaningneventodelladodelservidor.Lanavegacinserealizainmediatamentecuandoelusuariogenerael eventoclick,delladodelcliente,enelcontrol. LadireccindedestinoseespecificaenlapropiedadNavigateURLdelcontrol.Sisequiereinterceptaruneventoclicdesdeelservidor paracontrolarlanavegacindesdecdigo,sepuedeutilizaruncontroldeservidorButton,LinkButtonoImageButtonmselobjeto Response. b)UtilizandoelmtodoResponse.Redirect Permitenavegarhastaotrapgina,peroporcdigo.EsequivalentealanavegacinconelcontrolHiperLink.Parautilizarestemtodo, simplementeintroduzcaelcdigosiguienteeneleventoclickdeuncontroldeservidorButton:

PrivateSubImageButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.Web.UI.ImageClickEventArgs)HandlesImageB Response.Redirect("PaginaDestino.aspx") EndSub Observacin:ElmtodosobrecargadoRedirect(URL,Boolean)tieneunparmetrobooleanqueespecificasiseterminalaejecucindela pginaactual:True,ono:False.SiseespecificaTrueosiseutilizaelmtodoRedirectespecificandosolamentelaURLdedestino,se producirunaexcepcindeltipoThreadAbortException,queindicaeltrminodelaejecucindelapginaqueoriginalanavegacin.Se debeconsiderarestecomentariocuandosetienesentenciasRedirectdentrodebloquesTry,yaquelaexcepcinproducidaporel mtodoRedirectpuedenoseresperadaenelflujodelaaplicacin. c)UtilizandoelmtodoServer.Transfer Solosirveparanavegarentrepginasaspx.EstemtodoterminalaejecucindelWebFormqueoriginalallamadaynavegahastala pginaaspxdedestino.Siconsideramoselcomentarioanterior,lautilizacindeestemtodo,siemprevaagenerarunaexcepcindeltipo ThreadAbortException,yaqueterminalaejecucindelapginadeorigen.LasintaxiseslamismaqueparaelmtodoRedirect: PrivateSubImageButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.Web.UI.ImageClickEventArgs)Handles

ImageButton1.Click Server.Transfer("NuevaPagina.aspx") EndSub Laversinsobrecargadadeestemtodo,incorporaunvalorbooleanoparaespecificarsiseconservanlascoleccionesQueryStringy Formluegodeltrminodelaejecucindelapginaactual.EstopermitequepodamosaccederalosvaloresdelViewStatedelapginade origendesdelapginadedestino.Verelejemplomsadelante. 'PaginaOrigen.aspx

PrivateSubImageButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.Web.UI.ImageClickEventArgs)HandlesImageB Server.Transfer("PaginaDestino.aspx",True) EndSub 'PaginaDestino.aspx PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load DimpCollectionFormAsSystem.Collections.Specialized.NameValueCollection pCollectionForm=Request.Form Label1.Text=pCollectionForm.Item("TextBox1") EndSub Observacin:DebeintroducirseladirectivaEnableViewStateMac=falseenlapginadeorigenparadeshabilitarelhashingdel ViewState,delocontrarioseproducirunaexcepcin. LapginadeorigencontieneuncontroldeservidorTextBoxllamadoTextbox1.Elvalordeestecuadroswtextoesobtenidodesdela pginadedestinoymostradoenelcontrolLabel1. d)UtilizandoelmtodoServer.Execute Solofuncionaparanavegarentrepginasaspx.Laejecucindelapginadedestinocomienzasindetenerlaejecucindelapginaque originlanavegacin.Estemtodopermitedesplegarelcontenidodelapginadedestinoenunaseccindelapginadeorigen.Enel ejemplodemsabajo,semuestraelusodeestatcnicautilizandoelmtodosobrecargadoServer.Execute(String,TextWriter) EnelejemplosiguienteseescribeelcontenidodelapginadedestinoenlapginadeorigenutilizandoResponse.Write PrivateSubBtnServerEx_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesBtnServerEx.Click DimpContenidoPaginaDestinoAsNewSystem.IO.StringWriter Server.Execute("PaginaTres.aspx", pContenidoPaginaDestino)Response.Write(pContenidoPaginaDestino) EndSub Observacin:AligualqueparaelcasodeutilizarServer.Transferymantenerlalosdatosdelaestadodelapginadeorigen,es necesarioincorporarladirectivadepginaEnableViewStateMac=falseparadeshabilitarelhashingdelViewState. e)UtilizandoelmtododescriptdelladodelclienteWindow.Open Estatcnica,permitenavegarapginashtmloaspx.Comosetratadeunscriptdelladodelcliente,atravsdeestemtodoesposible controlarelaspectoyotrascaractersticaspropiasdelaventanadeInternetExplorer,comoporejemplo,abrirelcontenidoenunanueva ventanaoenunaventanatipopopup. DesdelosobjetosdelladodelservidornoesposiblecontrolarestascaractersticasyaqueesteobjetodeInternetExplorersoloexisteen elladodelcliente(DOM). Existenvariosmtodosparallamarscriptdelladodelclientedesdecdigodelladodelservidor.Enestaocasin,mostrarunmtodopara agregarcdigodeclienteenlapginahtmlutilizandoRegisterStartupScript.Estemtodoagregasecuenciasdecomandosalfinaldela pginahtml. Otratcnica(nosemuestraenesteartculo),seraestablecerelvalordelatributoonclickdeuncontrolhtmldesdecdigodelservidor: Control.Attributes.Add("onclick","javascript:AbrePagina('PaginaDestino.aspx)"),paraagregarelnombredeunafuncin,enelejemplo AbrePagina,delladodelclientedefinidaenunbloquescript. 1EjemploutilizandoRegisterStartupScript Loqueharemos,seragregarelscriptdelclienteeneleventoclicdeuncontrolaspButton.Loqueharelcdigoesagregarelscriptal finaldelapginadeorigen,loqueharqueesteseejecutecomosisiemprehubieseestadoall. PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

DimpClientScriptAsString pClientScript="<scriptlanguage=vbScript>" pClientScript+="window.open"&Chr(34)&"Pagina5.aspx"&Chr(34)&_ ","&Chr(34)&"_blank"&Chr(34)&","&Chr(34)&"width=510,height=360,left=200,top=250"&Chr(34) pClientScript+="</script>" RegisterStartupScript("PaginaDestino",pClientScript) EndSub Elcdigoanterior,generaelsiguientecdigoenlapginahtmlantesdelaetiqueta</FORM>: <SCRIPTlanguage=vbScript>'window.open"PaginaTres.aspx","_blank","width=510,height=360,left=200,top=250"</SCRIPT> <scriptlanguage=vbScript>'window.open"Pagina5.aspx","_blank","width=510,height=360,left=200,top=250"</script> Conclusiones Comosepuedever,existendiferentesmanerasdenavegarentreformulariosweb.Elusarunauotratcnicadependerdelescenarioque estemosenfrentando.Porejemplo,sinuestrorequerimientoinvolucramanejarlascaractersticasdelaventanaalaqueestamos navegando,necesariamentetendremosqueutilizarunatcnicaqueconsiderecdigodelladodelcliente.Siempreestastcnicasse podrncomplementarconotrasalternativasquepuedendarunaspectomsprofesionalanuestrosdesarrollosyquedependendelingenio deldesarrollador.Porejemplopodramosimplementarunmtododenavegacinconcontrolesdeusuario(.ascx)mselmtodo Response.Redirect(seincluyeelcdigoenlosejemplos).Conestatcnica,setieneunasolapginadondesevancargandolosdistintos formularios(controles.ascx)enuncontrolPlaceHolderdependiendoporejemplodeunaparmetroquesepaseenlallamada: Response.Redirect(default.aspx?Pagina=Pagina1.ascx)Sibienenlamayoradeloscasossepodrresolverlanavegacincon Response.RedirectoconWindow.Open,esrecomendableestudiarypracticarconlastcnicasantesdescritas,yaqueenciertas situacionesnosayudarnaresolvernuestroproblemademaneramseficiente.

Ficheroconelcdigodeejemplo:lveliz_TecnicasNavegacionNET.zip44,8KB