LoginView控件,仅为特定用户显示登录视图

本文关键字:用户 显示 登录 视图 控件 LoginView | 更新日期: 2023-09-27 18:17:37

所以我使用LoginView控件。这就是我所知道的,如果用户登录,它将显示模板的Loggedin视图,否则它显示AnonymousTemplate。这在我的页面上有效。我在很多页上都用过这个。

现在我的问题是:

  1. 是否有一种方法,我可以限制从显示非成员的登录视图,即使他们登录。换句话说,loggedin视图应该只显示给typeA成员,而不显示给typeB成员。

  2. 是否有一种方法,我可以以编程方式隐藏Loggedin/AnonymousTemplate为特定用户的。示例:在代码后面:

    If(type of member == A) then
       Loggedin.visible = true
    else
     loggedin.visible = false
    end if
    

我知道#2似乎不正确,但我不知道哪一个是最好的方法?

<asp:LoginView id="LoginView1" runat="server">
       <AnonymousTemplate>
             Please log in for personalized information.
       </AnonymousTemplate>
       <LoggedInTemplate>
             Thanks for logging in 
             <asp:LoginName id="LoginName1" runat="Server"></asp:LoginName>.
       </LoggedInTemplate>
</asp:LoginView>

LoginView控件,仅为特定用户显示登录视图

查看RoleGroups属性

<asp:LoginView id="LoginView1" runat="server">
   <AnonymousTemplate>
      (Content for anonymous users here)
   </AnonymousTemplate>
   <LoggedInTemplate>
      (Content for non-members here)
   </LoggedInTemplate>
   <RoleGroups>
      <asp:RoleGroup Roles="member">
         <ContentTemplate>
            (Content for members here)
         </ContentTemplate>
      </asp:RoleGroup>
   </RoleGroups>
</asp:LoginView>

如果你不想显示任何特定模板的内容,请将其保留为空。

Richards的回答提供了处理基于角色的asp:LoginView的更好方法

如果您有更复杂的逻辑来设置控件的可见性,您可以从后面的代码中完成,如下所示

<asp:LoginView id="LoginView1" runat="server">
    <AnonymousTemplate>
       <div id ="test1" runat="server">testing ....</div> 
    </AnonymousTemplate>

然后

var item = HeadLoginView.AnonymousTemplate;
var testDiv= HeadLoginView.FindControl("test1");
testDiv.Visible = true;