7 de diciembre de 2006

ENUMERADOS PARA NOMBRES DE PAGINAS

Un problema muy común con el que me he topado en proyectos anteriores y del cual se logra escapar con facilidad es el de redirección de paginas, la recomendación que sugiero para trabajar con un conjunto de formularios ASPX es agruparlos en un mismo directorio y llevar el control de las redirecciones con una función de redirección que trabaje con un enumerado la cual garantizaría la correcta redirección además de agregarle un parámetro aleatoria que volvería a recargar la pagina de los servidores, permitiendo de esta manera descartar la posibilidad de trabajar con versiones cacheadas de las paginas en el navegador cliente.

Un enumerado que lista las paginas del sistema:

Public Enum paginaSistema
inicio
login
...
End Enum

Una funcion que me devuelva la pagina deseada:

Public Function getFormulario(ByVal frm As paginaSistema) As String
Dim str As String = Nothing
Select Case frm
Case paginaSistema.login
str = "login.aspx"
Exit Select
Case paginaSistema.inicio
str = "inicio.aspx"
Exit Select
. . .
End Select
If (IsNothing(str)) Then
Throw New Exception("Falta frm " + frm.ToString("g"))
End If
Return str + getParametroRandom()
End Function

Una funcion que genera un parametro randomico:

Public Shared Function getParametroRandom() As String
Randomize()
Dim xdz As Random = New Random
Return "?rid=" + xdz.NextDouble.ToString().Replace(",", "X")
End Function

Para controlar las redirecciones de las páginas se podrían utilizar las siguientes funciones:

Public Sub RedireccionarPagina(ByVal pagina As paginaSistema)
RedirPag(Me, pagina)
End Sub

Public Shared Sub RedirPag(ByVal pagObj As Page, ByVal destino As paginaSistema)
RedirPag(pagObj, destino, Nothing)
End Sub

Public Shared Sub RedirPag(ByVal pagObj As Page, ByVal destino As paginaSistema, ByVal parametros As String)
If (IsNothing(parametros)) Then
pagObj.Response.Redirect(getFormulario(destino), False)
Else
pagObj.Response.Redirect(getFormulario(destino) + parametros, False)
End If
End Sub