Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Como decir que muestre un menú u otro dependiendo del grupo

Estas en el tema de Como decir que muestre un menú u otro dependiendo del grupo en el foro de .NET en Foros del Web. Hola; Me explico y haber si me podéis ayudar. Tengo una aplicación web (vb.net) y un Site.Master en la que tengo este contenido: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 16/01/2013, 04:33
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Exclamación Como decir que muestre un menú u otro dependiendo del grupo

Hola;

Me explico y haber si me podéis ayudar.
Tengo una aplicación web (vb.net) y un Site.Master en la que tengo este contenido:
Código HTML:
Ver original
  1. <%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Site.master.vb" Inherits="HojaDeGastos.Site" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  5. <head id="Head1" runat="server">
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  7.     <title></title>
  8.     <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
  9.     <asp:ContentPlaceHolder ID="HeadContent" runat="server">
  10.     </asp:ContentPlaceHolder>
  11. </head>
  12.     <form id="Form1" runat="server">
  13.     <div class="page">
  14.         <div class="header">
  15.             <div class="title">
  16.                 <h1>
  17.                     LIQUIDACIÓN DE GASTOS Y VISAS
  18.                 </h1>
  19.             </div>
  20.             <div class="clear hideSkiplink">
  21.                 <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
  22.              
  23.                         <Items>
  24.                             <asp:MenuItem NavigateUrl="~/PaginaPrincipal.aspx" Text="PÁGINA PRINCIPAL"/>
  25.                             <asp:MenuItem NavigateUrl="~/Gastos/HojaLiquidacionGastos.aspx" Text="LIQUIDACIÓN DE GASTOS"/>
  26.                             <asp:MenuItem NavigateUrl="~/Gastos/Visas.aspx" Text="VISAS"/>
  27.                             <asp:MenuItem NavigateUrl="~/Validar-Rechazar/Identificador.aspx" Text="VALIDAR / RECHAZAR"/>
  28.                         </Items>
  29.                    
  30.                 </asp:Menu>
  31.             </div>
  32.         </div>
  33.         <div class="main">
  34.             <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
  35.         </div>
  36.         <div class="clear">
  37.         </div>
  38.     </div>
  39.     <div class="footer">
  40.        
  41.     </div>
  42.     </form>
  43. </body>
  44. </html>

Todas las aspx que voy creando cargan esta pagina (Site.Master) de esta forma:
Código vb:
Ver original
  1. <%@ Page Title="Iniciar sesión" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false"
  2.     CodeBehind="Login.aspx.vb" Inherits="HojaDeGastos.Login" %>

La pagina principal de mi aplicación web es Login.aspx en la cual le indicas a la hora de hacer el login el grupo al que perteneces.

Lo que quiero es que primeramente, cuando accedo a la pantalla de login dentro del <asp:Menu></asp:Menu> del Site.Master, no se me muestre ningún item del menú y una vez haga login e indique el grupo al que pertenezco, pasarle esa variable de grupo al site.master y que muestre menús diferentes.

Se que el código que escribiré ahora esta mal pero es mas o menos para que entendáis lo que quiero:

Código HTML:
Ver original
  1. <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
  2.                     <%If grupoUsuario = 1 Then%>
  3.                         <Items>
  4.                             <asp:MenuItem NavigateUrl="~/PaginaPrincipal.aspx" Text="PÁGINA PRINCIPAL"/>
  5.                             <asp:MenuItem NavigateUrl="~/Gastos/HojaLiquidacionGastos.aspx" Text="LIQUIDACIÓN DE GASTOS"/>
  6.                             <asp:MenuItem NavigateUrl="~/Gastos/Visas.aspx" Text="VISAS"/>
  7.                             <asp:MenuItem NavigateUrl="~/Validar-Rechazar/Identificador.aspx" Text="VALIDAR / RECHAZAR"/>
  8.                         </Items>
  9.                     <%ElseIf grupoUsuario = 2 Then%>
  10.                         <Items>
  11.                             <asp:MenuItem NavigateUrl="~/PaginaPrincipal.aspx" Text="PÁGINA PRINCIPAL"/>
  12.                             <asp:MenuItem NavigateUrl="~/Gastos/Visas.aspx" Text="VISAS"/>
  13.                         </Items>
  14.                     <%ElseIf grupoUsuario = 0 Then%>
  15.                         <Items>
  16.                             <asp:MenuItem NavigateUrl="~/PaginaPrincipal.aspx" Text="PÁGINA PRINCIPAL"/>
  17.                             <asp:MenuItem NavigateUrl="~/Gastos/HojaLiquidacionGastos.aspx" Text="LIQUIDACIÓN DE GASTOS"/>
  18.                         </Items>
  19.                     <%End If%>
  20.                 </asp:Menu>

¿Como puedo hacerlo?
__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 16/01/2013, 05:10
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Una opción sería tener el Menu vacío. Al hacer el Login guardaría en una variable de Sessión el grupo del usuario que ha entrado. Y con eso montaría el menú de forma dinámica (en tiempo de ejecució). Puedes tener en el Load de la MasterPage una llamada a una función llamada, por ejemplo, "montarMenu" y la función obtenga de Session el grupo y agregue los MenuItem al Menu.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 16/01/2013, 06:42
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Una opción sería tener el Menu vacío. Al hacer el Login guardaría en una variable de Sessión el grupo del usuario que ha entrado. Y con eso montaría el menú de forma dinámica (en tiempo de ejecució). Puedes tener en el Load de la MasterPage una llamada a una función llamada, por ejemplo, "montarMenu" y la función obtenga de Session el grupo y agregue los MenuItem al Menu.
Hola;

Gracias, He conseguido hacer lo de la variable de sesión pero como le indico que en esa función "montarMenu" me escriba los Item que quiero?
__________________
Gracias por todo;

Un saludo
  #4 (permalink)  
Antiguo 16/01/2013, 06:52
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Tendrías que tener un if/switch para controlar los diferentes grupos. Luego, para agregar los items aquí tienes un ejemplo que te servirá de ayuda:

http://msdn.microsoft.com/es-es/libr...vs.100%29.aspx
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 16/01/2013, 07:57
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Pregunta Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Tendrías que tener un if/switch para controlar los diferentes grupos. Luego, para agregar los items aquí tienes un ejemplo que te servirá de ayuda:

http://msdn.microsoft.com/es-es/libr...vs.100%29.aspx
Prefecto!!!!!!

Me ha venido de perlas la información que me has dado. Pero tengo una duda.
Te muestro el código de como ha quedado. Lo que quiero es que cuando le de a LOGOUT este me cambie la variable de sesion de grupo y me lo ponga a 0.
¿Cómo le indico eso?
Código vb.net:
Ver original
  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.         Dim grupo As Integer
  3.  
  4.         grupo = CType(Session("grupoUsuario"), Integer)
  5.  
  6.         ' Create a new Menu control.
  7.         Dim newMenu As New Menu()
  8.  
  9.         'Set the properties of the Menu control.
  10.         newMenu.ID = "NavigationMenu"
  11.         newMenu.CssClass = "menu"
  12.         newMenu.Orientation = Orientation.Horizontal
  13.         newMenu.EnableViewState = "false"
  14.         newMenu.IncludeStyleBlock = "false"
  15.  
  16.         ' Create the root menu item.
  17.         Dim homeMenuItem1 As MenuItem
  18.         Dim homeMenuItem2 As MenuItem
  19.         Dim homeMenuItem3 As MenuItem
  20.         Dim homeMenuItem4 As MenuItem
  21.         Dim homeMenuItem5 As MenuItem
  22.  
  23.         If grupo = 1 Then
  24.             ' Create the menu structure.
  25.  
  26.             homeMenuItem1 = CreateMenuItem("PÁGINA PRINCIPAL", "~/PaginaPrincipal.aspx", "PÁGINA PRINCIPAL")
  27.             homeMenuItem2 = CreateMenuItem("LIQUIDACIÓN DE GASTOS", "~/Gastos/HojaLiquidacionGastos.aspx", "LIQUIDACIÓN DE GASTOS")
  28.             homeMenuItem3 = CreateMenuItem("VISAS", "~/Gastos/Visas.aspx", "VISAS")
  29.             homeMenuItem4 = CreateMenuItem("VALIDAR / RECHAZAR", "~/Validar-Rechazar/Identificador.aspx", "VALIDAR / RECHAZAR")
  30.             homeMenuItem5 = CreateMenuItem("LOGOUT", "~/Login.aspx", "LOGOUT")
  31.  
  32.             ' Add the root menu item to the ItemsCollection
  33.             ' of the Menu control.
  34.             newMenu.Items.Add(homeMenuItem1)
  35.             newMenu.Items.Add(homeMenuItem2)
  36.             newMenu.Items.Add(homeMenuItem3)
  37.             newMenu.Items.Add(homeMenuItem4)
  38.             newMenu.Items.Add(homeMenuItem5)
  39.         ElseIf grupo = 2 Then
  40.             ' Create the menu structure.
  41.  
  42.             homeMenuItem1 = CreateMenuItem("PÁGINA PRINCIPAL", "~/PaginaPrincipal.aspx", "PÁGINA PRINCIPAL")
  43.             homeMenuItem3 = CreateMenuItem("VISAS", "~/Gastos/Visas.aspx", "VISAS")
  44.             homeMenuItem5 = CreateMenuItem("LOGOUT", "~/Login.aspx", "LOGOUT")
  45.  
  46.             ' Add the root menu item to the ItemsCollection
  47.             ' of the Menu control.
  48.             newMenu.Items.Add(homeMenuItem1)
  49.             newMenu.Items.Add(homeMenuItem3)
  50.             newMenu.Items.Add(homeMenuItem5)
  51.         ElseIf grupo = 3 Then
  52.             ' Create the menu structure.
  53.  
  54.             homeMenuItem1 = CreateMenuItem("PÁGINA PRINCIPAL", "~/PaginaPrincipal.aspx", "PÁGINA PRINCIPAL")
  55.             homeMenuItem2 = CreateMenuItem("LIQUIDACIÓN DE GASTOS", "~/Gastos/HojaLiquidacionGastos.aspx", "LIQUIDACIÓN DE GASTOS")
  56.             homeMenuItem5 = CreateMenuItem("LOGOUT", "~/Login.aspx", "LOGOUT")
  57.  
  58.             ' Add the root menu item to the ItemsCollection
  59.             ' of the Menu control.
  60.             newMenu.Items.Add(homeMenuItem1)
  61.             newMenu.Items.Add(homeMenuItem2)
  62.             newMenu.Items.Add(homeMenuItem5)
  63.         End If
  64.  
  65.         ' Add the Menu control to the Controls collection
  66.         ' of the PlaceHolder control.
  67.         MenuPlaceHolder.Controls.Add(newMenu)
  68.     End Sub
  69.  
  70.     Function CreateMenuItem(ByVal text As String, ByVal url As String, ByVal toolTip As String) As MenuItem
  71.  
  72.         ' Create a new MenuItem object.
  73.         Dim menuItem As New MenuItem()
  74.  
  75.         ' Set the properties of the MenuItem object using
  76.         ' the specified parameters.
  77.         menuItem.Text = text
  78.         menuItem.NavigateUrl = url
  79.         menuItem.ToolTip = toolTip
  80.  
  81.         Return menuItem
  82.  
  83.     End Function
  84.  
  85. End Class
__________________
Gracias por todo;

Un saludo
  #6 (permalink)  
Antiguo 16/01/2013, 08:48
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por maialenlopez Ver Mensaje
Prefecto!!!!!!

Me ha venido de perlas la información que me has dado. Pero tengo una duda.
Te muestro el código de como ha quedado. Lo que quiero es que cuando le de a LOGOUT este me cambie la variable de sesion de grupo y me lo ponga a 0.
¿Cómo le indico eso?
Puedes hacer que el menu redireccione a (por ejemplo) Logout.aspx. En Logout.aspx cierras la validación por formulario (SignOut) y vacias las variables de sesión (Session.Clear y Session.Abandon) y y redireccionas a Login.aspx (con un Response.Redirect).
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 16/01/2013, 09:06
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Pregunta Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Puedes hacer que el menu redireccione a (por ejemplo) Logout.aspx. En Logout.aspx cierras la validación por formulario (SignOut) y vacias las variables de sesión (Session.Clear y Session.Abandon) y y redireccionas a Login.aspx (con un Response.Redirect).
Hola;

He creado como me has indicado un Logout.aspx pero no entiendo eso que me dices de cerrar la validacion por formulario (SingOut).

Logout.aspx:
Código aspx:
Ver original
  1. <%@ Page Title="Iniciar sesión" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false"
  2.     CodeBehind="Logout.aspx.vb" Inherits="HojaDeGastos.Login" %>
  3.  
  4. <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
  5. </asp:Content>
  6. <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  7.     <h2>
  8.         Cerrando sesión...
  9.     </h2>
  10. </asp:Content>

Logout.aspx.vb:
Código vb.net:
Ver original
  1. Public Class Logout
  2.     Inherits System.Web.UI.Page
  3.  
  4.     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  5.         Session.Clear()
  6.         Session.Abandon()
  7.  
  8.         Response.Redirect(String.Format("~/Login.aspx"))
  9.     End Sub
  10. End Class
__________________
Gracias por todo;

Un saludo
  #8 (permalink)  
Antiguo 16/01/2013, 09:48
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Me referia a llamar a esta función:
http://msdn.microsoft.com/es-es/libr...=vs.80%29.aspx
__________________
Aviso: No se resuelven dudas por MP!
  #9 (permalink)  
Antiguo 16/01/2013, 10:11
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Me referia a llamar a esta función:
http://msdn.microsoft.com/es-es/libr...=vs.80%29.aspx
He echo lo siguiente en logout.aspx.vb pero no me funciona.
Es que no se como utilizar eso.

Código vb.net:
Ver original
  1. Public Class Logout
  2.     Inherits System.Web.UI.Page
  3.  
  4.     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  5.  
  6.        
  7.         Session.Clear()
  8.         Session.Abandon()
  9.         FormsAuthentication.SignOut()
  10.         FormsAuthentication.RedirectToLoginPage("~/Login.aspx")
  11.         'Response.Redirect(String.Format("~/Login.aspx"))
  12.     End Sub
  13. End Class
__________________
Gracias por todo;

Un saludo
  #10 (permalink)  
Antiguo 16/01/2013, 10:16
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Yo lo que uso (aunque es en c#) es esto:

Código C++:
Ver original
  1. System.Web.Security.FormsAuthentication.SignOut();
  2.         HttpContext.Current.Session.Clear();
  3.         HttpContext.Current.Session.Abandon();
  4.         HttpContext.Current.Response.Redirect("login.aspx", false);
__________________
Aviso: No se resuelven dudas por MP!
  #11 (permalink)  
Antiguo 17/01/2013, 02:14
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Yo lo que uso (aunque es en c#) es esto:

Código C++:
Ver original
  1. System.Web.Security.FormsAuthentication.SignOut();
  2.         HttpContext.Current.Session.Clear();
  3.         HttpContext.Current.Session.Abandon();
  4.         HttpContext.Current.Response.Redirect("login.aspx", false);
hola;

He escrito en vb lo que me has mostrado y perfecto. Me redirige a Login.aspx y cierra la sesion.

Muchisimas gracias
__________________
Gracias por todo;

Un saludo
  #12 (permalink)  
Antiguo 23/01/2013, 03:46
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Yo lo que uso (aunque es en c#) es esto:

Código C++:
Ver original
  1. System.Web.Security.FormsAuthentication.SignOut();
  2.         HttpContext.Current.Session.Clear();
  3.         HttpContext.Current.Session.Abandon();
  4.         HttpContext.Current.Response.Redirect("login.aspx", false);
Hola;

Tengo un problema y no se por que. Poniendo eso que tu me indicas me acabo de dar cuenta que si mi grupo es "grupo = 1" si me cierra la sesión y me coge que "grupo = 0" pero si mi grupo es "grupo =2" no me cierra la sesión me va a la pagina login.aspx pero no me cambia a "grupo=0" no se por que me sigue manteniendo el grupo a "grupo = 2".
__________________
Gracias por todo;

Un saludo
  #13 (permalink)  
Antiguo 23/01/2013, 04:34
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por maialenlopez Ver Mensaje
Hola;

Tengo un problema y no se por que. Poniendo eso que tu me indicas me acabo de dar cuenta que si mi grupo es "grupo = 1" si me cierra la sesión y me coge que "grupo = 0" pero si mi grupo es "grupo =2" no me cierra la sesión me va a la pagina login.aspx pero no me cambia a "grupo=0" no se por que me sigue manteniendo el grupo a "grupo = 2".
Cuando haces el Login siempre has de consultar el grupo y definirlo en la variable de Session. Nunca te puedes fiar de los valores que pueda tener previamente.
__________________
Aviso: No se resuelven dudas por MP!
  #14 (permalink)  
Antiguo 23/01/2013, 05:03
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 11 años, 11 meses
Puntos: 7
Respuesta: Como decir que muestre un menú u otro dependiendo del grupo

Cita:
Iniciado por Malenko Ver Mensaje
Cuando haces el Login siempre has de consultar el grupo y definirlo en la variable de Session. Nunca te puedes fiar de los valores que pueda tener previamente.
Gracias, he echo lo que me has dicho y perfecto. Me estaba cogiendo valores raros.

Gracias por todo
__________________
Gracias por todo;

Un saludo

Etiquetas: decir, dependiendo, grupo, net, server, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.