Algunas funciones útiles en nuestras MasterPages
|  | El Título no nos dice mucho, pero recorriendo la web constantemente buscando datos útiles que nos sirvan para el desarrollo de nuestras páginas, siempre que nos hagan la vida un poco más sencilla. Veamos algunas funciones que podemos dejar en nuestras MasterPages (ya poco me imagino el mundo sin esta gran característica) o si no ocupas MP o puedes dejarla una clase base que herede de la clases WebForm. |
Setear el Título de la Página
Muchas veces se nos olvida setear el título de una página, la idea es que esto no pase, ya que el usuario va a ver “Untitled Page” en la barra de tareas, y se ve bien poco profesional. De hecho , me ha pasado varias veces que olvido este importante atributo, no querrás ser parte de las casi 43 Millones de páginas que están sin título! No me crees? mira esto:
http://search.live.com/results.aspx?q=untitled+page&form=QBLH
Entonces veamos una manera de solucionar esto, (como siempre digo, seguramente hay maneras más completas, pero lo que quiero mostrar es una idea).
Primero, agregamos unas entradas a nuestro Web.Config
<appSettings>
<add key="NombreTitulo" value="Titulo1"/>
<add key="Titulo1" value="Titulo Personalidado 1"/>
<add key="Titulo2" value="Titulo Personalidado 2"/>
</appSettings>
Entonces, tenemos la key que me entrega el nombre de la key en donde tengo el título, hago esto para no tener modificar un código de la aplicación si es que necesito cambiar de títulos rápidamente(sin compilar) Luego, en mi MasterPage, escribo el siguiente código:
Partial Class MasterPage
Inherits System.Web.UI.MasterPage
Private Sub SeteaTitulo() Handles Me.Load
If (String.IsNullOrEmpty(Page.Title) OrElse _
String.Compare(Page.Title, "Untitled Page", True) = 0 OrElse _
String.Compare(Page.Title, "Sin titulo", True) = 0) Then
Me.Page.Title = ObtieneTitulo()
End If
End Sub
Private Function ObtieneTitulo() As String
Dim NombreClave As String = _
ConfigurationManager.AppSettings("NombreTitulo")
Return ConfigurationManager.AppSettings(NombreClave)
End Function
End Class
Como se ve en el código, se crear una funcion que obtiene el nombre del la clave que contendrá el título de la página, la cual se llama desde SeteaTitulo(), que es manejado por el Load de la página, se hacen las comparaciones de rigor, y, si no hay titulo seteado, lo obtenemos desde ObtieneTitulo().
…y presto!
Ventanas Emergentes
Una de las funcionalidades que muchas veces nos “acostumbramos” a perder en ASP.NET son las ventanas emergentes de Javascript, ya que empezamos a programar todo del lado del servidor, son las ventanas emergentes de Javascript, (y para los más nuevos, msgbox en .net les va a funcionar en tiempo de desarrollo en el servidor de prueba, en el servidor de explotación, no)
Bueno, volvamos, entonces vamos a tener que insertar código javascript en nuestra página, para eso vamos a utilizar el método RegisterStartupScript. Y crearemos dos tipos de mensajes, el normal con JavasCript y otro un poco más Cool (el Script lo obtuve y modifiqué de la página:http://jdstiles.com/java/jsalert.html gracias Jim!)
Los resultados que tendremos serán:
| Resultado al presionar el Boton Alert Normal | Resultado al Presionar el Boton Alert Cool |
|  |  |
El código en la MasterPage para Alert Normal
Public Sub MostrarVentana(ByVal texto As String, ByVal clientScript As ClientScriptManager)
Dim csname1 As String = "PopupScript"
Dim csname2 As String = "MessageScript"
Dim cs As ClientScriptManager = clientScript
If (Not cs.IsStartupScriptRegistered(Me.GetType, csname1)) Then
Dim cstext1 As String = String.Format("alert('{0}');", texto)
cs.RegisterStartupScript(Me.GetType,csname1,cstext1.ToString, True)
End If
End Sub
En donde lo que estamos haciendo es incrustar un javascript mediante en la página, si te das cuenta, primero revisamos que no esté la clave ya en la página.
A Continuación el código del Alert Cool, que más que nada, llama a un Javacript que genera en un div, el formato para crear la forma de una ventana de Alerta.
Public Sub MostrarVentanaCool(ByVal titulo As String, ByVal texto As String, ByVal clientScript As ClientScriptManager)
Dim csname1 As String = "PopupScript"
Dim csname2 As String = "MessageScript"
Dim cs As ClientScriptManager = clientScript
If (Not cs.IsStartupScriptRegistered(Me.GetType, csname1)) Then
Dim cstext1 As String = String.Format("makeAlert('{0}','{1}');", titulo, texto)
cs.RegisterStartupScript(Me.GetType, csname1, cstext1.ToString, True)
End If
End Sub
En las dos funciones pasamos como parámetro el ClientScript , recordemos que estamos en la MasterPage y estas funciones van a ser llamadas desde sus Páginas Hijas ( así nos ahorramos el problema de la propiedad clientScript de la MasterPage).
A continuación agregamos en el código declarativo (dentro del Body) de la MasterPage, las siguientes lineas de código, que nos permitirán la funcionalidad de la Cool.
<div id="alertLayer" class="alertBoxStyle"></div>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
<script src="Mensaje.js" type="text/javascript"></script>
Ahora en las Páginas hijas de esta MP, vamos a instanciar la MasterPage:
Dim mp As New MasterPage
Y luego las llamadas a los métodos correspondientes según el alert que quieras mostrar:
mp.MostrarVentana("Mi Mensaje", Page.ClientScript)
ó
mp.MostrarVentanaCool("Titulo de la Ventana", _
"El Mensaje al usuario", _
Page.ClientScript)
Ahora todas las ventanas hijas tienen esta funcionalidad :D
Te Adjunto el Proyecto de Ejemplo para que veas el CSS y JS de la ventana Cool :)
Descárgalo Aquí
Espero que te sirva,
Gonzalo