Domanda

Ho problemi con un LoginView per quello che mi serve. Qualcuno può dirmi se posso fare questo in un LoginView (e come) o se ho bisogno di usare code-behind.

Ho due ruoli - amministratore e utente. Voglio visualizzare dinamicamente i collegamenti in base al ruolo. Scriverò fuori quello che voglio in un'istruzione if perché è più facile da spiegare:

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
È stato utile?

Soluzione

Prova qualcosa di simile si utilizza il RoleGroups proprietà. È inoltre possibile specificare il RoleGroup per l'utente, ma se si utilizza il LoggedInTemplate essa avrà effetto per tutti gli utenti registrati in quanto non hanno un gruppo nel RoleGroup. Infine, non c'è davvero un modo per avere un modello condiviso, come lo scenario hai descritto con gli utenti / Anonymous, quindi potrebbe essere necessario duplicare. Un altro possiblity è che non li includere nel vostro LoginView e mostrare loro agli Amministratori pure.

<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>

Altri suggerimenti

Si può certamente ottenere ciò che stai cercando con il controllo ASP.NET LoginView.

Ti consigliamo di esaminare la " RoleGroups " proprietà del controllo LoginView, in quanto ciò consente di creare ContentTemplates che si differenziano in base sul ruolo che l'utente autenticato appartiene.

Ad esempio:

<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>

Utilizzando questo meccanismo permette di definire i contenuti per ogni ruolo puramente dichiarativo nella ASP mark-up. In alternativa, si può sempre fare questo nel codice lato server, e può quindi mostrare / nascondere tutti i controlli (che runat = "server") a seconda qualsiasi criterio che ti piace. Ad esempio, in alternativa al controllo LoginView, è possibile utilizzare il MultiView / Vista controlli .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top