3

必要なものにLoginViewを使用する際に問題が発生します。LoginViewでこれを実行できるかどうか(およびその方法)、またはコードビハインドを使用する必要があるかどうかを誰かに教えてもらえますか?

管理者とユーザーの2つの役割があります。役割に基づいて動的にリンクを表示したい。説明しやすいので、ifステートメントに必要なものを書きます。

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
4

2 に答える 2

12

RoleGroupsプロパティを使用するこのようなものを試してください。ユーザーのRoleGroupを指定することもできますが、LoggedInTemplateを使用すると、RoleGroupにグループがないログインしているすべてのユーザーに有効になります。最後に、Users / Anonymousで説明したシナリオのような共有テンプレートを作成する方法は実際にはないため、複製する必要がある場合があります。もう1つの可能性は、LoginViewにそれらを含めず、管理者にも表示することです。

<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>
于 2009-04-15T14:38:34.283 に答える
4

ASP.NET LoginViewコントロールを使用すると、探しているものを確実に実現できます。

LoginViewコントロールの「RoleGroups」プロパティを調べることをお勧めします。これにより、認証されたユーザーが属する役割に基づいて異なるContentTemplatesを作成できます。

例えば:

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

このメカニズムを使用すると、ASPマークアップで純粋に宣言的に各ロールのコンテンツを定義できます。または、サーバー側のコードでいつでもこれを実行し、必要な基準に応じてコントロール(runat = "server")を表示/非表示にすることができます。たとえば、LoginViewコントロールの代わりに、MultiView/Viewコントロールを使用できます。

于 2009-04-15T14:42:43.620 に答える