使用 ASP.NET LoginView 动态显示链接

发布于 2024-07-16 19:58:50 字数 520 浏览 3 评论 0原文

我在使用 LoginView 来满足我的需要时遇到问题。 有人可以告诉我是否可以在 LoginView 中执行此操作(以及如何执行)或者是否需要使用代码隐藏。

我有两个角色 - 管理员和用户。 我想根据角色动态显示链接。 我会在 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

I am having problems using a LoginView for what I need. Can somebody tell me if I can do this in a LoginView (and how) or if I need to use code-behind.

I have two roles - Administrator and User. I want to dynamically display links based on the role. I will write out what I want in an if statement because it's easier to explain:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪异←思 2024-07-23 19:58:50

尝试类似的方法,它使用 RoleGroups 属性。 您还可以为用户指定 RoleGroup,但如果您使用 LoggedInTemplate,它将对 RoleGroup 中没有组的所有登录用户生效。 最后,实际上没有办法拥有像您在“用户/匿名”中描述的场景那样的共享模板,因此您可能必须进行复制。 另一种可能性是您不将它们包含在您的登录视图中,也不将它们显示给管理员。

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

Try something like this it uses the RoleGroups property. You can also specify the RoleGroup for the user, but if you use the LoggedInTemplate it will take affect for all users logged in that don't have a Group in the RoleGroup. Finally, there isn't really a way to have a shared template like the scenario you described with Users/Anonymous, so you may have to duplicate. Another possiblity is that you don't include them in your LoginView and show them to the Administrators as well.

<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>
没︽人懂的悲伤 2024-07-23 19:58:50

您当然可以使用 ASP.NET LoginView 控件来实现您想要的目标。

您需要查看“

例如:

<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 控件。

You can certainly achieve what you're looking for with the ASP.NET LoginView control.

You'll want to look into the "RoleGroups" property of the LoginView control, as this allows you to create ContentTemplates that differ based upon the role that the authenticated user belongs to.

For Example:

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

Using this mechanism allows you to define your content for each role purely declaratively in the ASP mark-up. Alternatively, you can always do this in server-side code, and can then show/hide any controls (that runat="server") depending upon any criteria you like. For example, as an alternative to the LoginView control, you could use the MultiView/View controls.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文