2012-03-31 16 views
5

esta es la primera vez que publico en StackOverflow pero este sitio es increíble. Gracias de antemano por cualquier ayuda que puedas dar.ASP.NET - Cómo crear de manera eficiente el menú específico del usuario dinámico de la base de datos

Tengo un sitio que brinda a los usuarios acceso a diferentes páginas en función de sus permisos, por lo que cada usuario debe tener su menú generado dinámicamente cuando inician sesión. Sin embargo, las opciones de un usuario probablemente no cambien con mucha frecuencia.

Actualmente, el sitio tiene una página maestra que extrae una lista de sus páginas de la base de datos y crea un menú. Lo hace cada vez que el usuario carga una página.

Quería reducir las llamadas a la base de datos, así que empecé a poner los datos del menú en una variable de sesión. Esperaba que alguien con más experiencia pudiera ayudarme a asegurarme de que esta sea la mejor manera de hacerlo. Creo que preferiría una forma de almacenarlo en la máquina del usuario y no en el servidor.

Tengo Esta es la página de carga de mi Maestro:

User u = new User(Page.User.Identity.Name, Globals.getCnString()); 
     DataTable menu; 
     if(Session["MENU"] == null) 
     { 
      Session["MENU"] = u.getMenu(); 
     } 
     menu = (DataTable)Session["MENU"]; 

     foreach (DataRow r in menu.Rows) 
     { 
      //build menu code here. 
     } 

Gracias de nuevo!

Respuesta

1

Si las opciones de usuario no se van a cambiar muy a menudo, ¿por qué no se construye el menú sólo cuando ocurrió el cambio, lo guarda en la tabla de perfiles de usuario (en formato html), y pasarlo a un control literal en la página Maestra en lugar del menú, de esa manera no la almacenará en la máquina del usuario (que no se recomienda para un sitio web).

0

Cree un archivo XML con la lista de URL. Para cada elemento de URL, agregue un atributo para los permisos y base la visibilidad de cada enlace sobre eso.

Cuestiones relacionadas