Personalizando las aplicaciones Web (Final)

En los anteriores posts (I, II y III) hemos hablado de como usar la autenticación/autorización de ASP.NET y en este último post veremos como usarlo para la personalización de themes usando el Profile.

Personalizando las aplicaciones

En la mayoría de las aplicaciones debemos personalizar la aplicación, ya sea dependiendo de la función, como ha visto en el apartado anterior, o, como verá en este, para que el usuario pueda personalizar la aplicación a su gusto. Los casos de uso pueden ser muy diversos, entre tener creados diferentes themes y el usuario pueda escoger el que más le guste, también puede configurar lo que el usuario quiere ver en la página principal de nuestra aplicación.

Nuestro ejemplo tratará de cómo poder escoger un theme entre varios. Para ello, primero, debe tener unos pequeños conceptos sobre los temas.

Un tema es una carpeta que contiene un conjunto de Hojas de estilo y archivos de máscara. Todos los temas se guardan en la carpeta, de ASP.NET, App_Themes y a una página se le aplica todo el tema.

Para el ejemplo debe crear tres temas, uno llamado Normal que es el predeterminado y luego uno llamado Azul y otro Verde.

En la página debe de crear un DropDownList como se muestra en el siguiente código:

 

<asp:DropDownList ID="DDLTemas" runat="server" AutoPostBack="True"> <asp:ListItem Value="Normal">Normal</asp:ListItem> <asp:ListItem Value="Azul">Azul</asp:ListItem> <asp:ListItem Value="Verde">Verde</asp:ListItem> </asp:DropDownList>

Como ve está activado el AutoPostBack para que en cuanto el usuario seleccione un elemento se generé un PostBack.

Para guardar la selección del usuario debe de crear una propiedad llamada Tema de tipo String. El siguiente fuente muestra el código de servidor gestionará la selección de tema.

Protected Sub DDLTemas_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Profile.SetPropertyValue("Tema", CType(sender, DropDownList).SelectedValue) Profile.Save() End Sub Protected Sub DDLTemas_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) CType(sender, DropDownList).SelectedValue = Profile.Item("Tema") End Sub

El evento SelectedIndexChanged es el que se genera cual el usuario selecciona un elemento y el PreRender antes de renderizar el control. Con el primer método cambia el Profile del usuario y con el segundo selecciona el que se encuentra en el Profile del usuario.

Por último para seleccionar el tema que el usuario ha escogido y ponerlo en la página debe controlar el evento PreInit de la página, el código es el siguiente:

If Not Membership.GetUser Is Nothing Then Page.Theme = Profile.Item("Tema") Else Page.Theme = "Normal" End If

Conclusión final

En esta serie de posts hemos visto como configurar el MemberShipProvider, también hemos como usar la API de MemberShip, Profile y Roles. Luego, hemos visto como usar la herramienta de configuración de ASP.NET. Por último hemos visto como impedir que usuarios con roles no autorizados hagan una tarea que no les corresponde y a personalizar el sitio a gusto del usuario.

Como habréis observado estas novedades de ASP.NET 2.0 nos ahorran muchas líneas de código con respecto a la versión ASP.NET 1.x.

Por último me gustaría agradecer a Sergio Vazquez (http://geeks.ms/blogs/sergio) el tiempoq ue ha gastado con esta serie.

3 thoughts on “Personalizando las aplicaciones Web (Final)

  1. Enhorabuena por tu primera serie Eugenio, bastante didáctica para los nuevos en la materia
    y gracias por la mención 😉

    Ánimo y sigue así superandote dia a dia! 🙂

    Nos veremos pronto!

    Sergio

  2. Hola amigo:
    soy nuevo en esto del asp.net y me parrece muy bueno lo de la herramienta para administrar usuarios, pero tengo una consulta,…. como haria para trabajar con membership pero con una tabal de usuarios propia, es necesario que trabaje con la creada por default(aspnet_users), denme una ayuda , se los agardecere
    bytes y buena suerte.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *