Pregunta

Estoy teniendo problemas con una LoginView para lo que yo necesito.Puede alguien decirme si puedo hacer esto en un LoginView (y cómo) o si tengo que usar el código subyacente.

Tengo dos funciones: Administrador y Usuario.Quiero mostrar de forma dinámica los vínculos basados en el papel.Voy a escribir lo que quiero en una instrucción if, porque es más fácil de explicar:

if (role = Administrator) //Display only if administrator.
   Show Hyperlink 1
   Show Hyperlink 2
else
   if (role = User) //Display only if user.
      Show Hyperlink 3
      Show Hyperlink 4
   endif
   //Display these if a user or if non-authenticated user...
   Show Hyperlink 5
   Show Hyperlink 6
   Show Hyperlink 7 
endif
¿Fue útil?

Solución

Trate algo como esto lo utiliza el RoleGroups propiedad. También puede especificar el RoleGroup para el usuario, pero si se utiliza el LoggedInTemplate que surtirán efecto para todos los usuarios registrados en la que no tienen un grupo en el RoleGroup. Por último, no hay realmente una manera de tener una plantilla compartida como el escenario que describes con los usuarios / Anónimo, por lo que puede tener que duplicar. Otra posibilidad es que no se incluye en tu LoginView y mostrarles a los administradores también.

<asp:LoginView runat="server" ID="LoginView">
    <AnonymousTemplate>
        <asp:HyperLink runat="server" ID="Link5" />
        <asp:HyperLink runat="server" ID="Link6" />
        <asp:HyperLink runat="server" ID="Link7" />
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:HyperLink runat="server" ID="Link3" />
        <asp:HyperLink runat="server" ID="Link4" />
        <asp:HyperLink runat="server" ID="Link5" />
        <asp:HyperLink runat="server" ID="Link6" />
        <asp:HyperLink runat="server" ID="Link7" />
    </LoggedInTemplate>
    <RoleGroups>
        <asp:RoleGroup Roles="Administrator">
            <ContentTemplate>
                <asp:HyperLink runat="server" ID="Link1" />
                <asp:HyperLink runat="server" ID="Link2" />
            </ContentTemplate>
        </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>

Otros consejos

Por supuesto que puede lograr lo que se está buscando con el control ASP.NET LoginView.

Usted querrá buscar en el " RoleGroups " propiedad del control LoginView, ya que esto le permite crear ContentTemplates que difieren en base a la función que el usuario autenticado pertenece.

Por ejemplo:

<form id="form1" runat="server">
   <asp:LoginView id="LoginView1" runat="server">
      <RoleGroups>
         <asp:RoleGroup Roles="administrator">
            <ContentTemplate>
               <ul>
                  <li>Hyperlink 1</li>
                  <li>Hyperlink 2</li>
               </ul>
            </ContentTemplate>
         </asp:RoleGroup>
         <asp:RoleGroup Roles="user">
            <ContentTemplate>
               <ul>
                  <li>Hyperlink 3</li>
                  <li>Hyperlink 4</li>
               </ul>
            </ContentTemplate>
          </asp:RoleGroup>
      </RoleGroups>
      <AnonymousTemplate>
         <ul>
            <li>Hyperlink 5</li>
            <li>Hyperlink 6</li>
         </ul>
      </AnonymousTemplate>
   </asp:LoginView>
</form>

El uso de este mecanismo le permite definir su contenido para cada función meramente declarativa en el ASP margen de ganancia. Por otra parte, siempre se puede hacer esto en el código del lado del servidor, y luego puede mostrar / ocultar los controles (que runat = "server"), dependiendo de tus propios criterios. Por ejemplo, como alternativa al control LoginView, se podría utilizar el MultiView / Vista controles .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top