LoginView Control仅显示特定用户的登录视图

时间:2013-06-07 16:40:41

标签: c# asp.net vb.net

所以我正在使用LoginView Control。这就是我所知道的,如果用户登录,它将显示模板的Loggedin View,否则显示AnonymousTemplate。这适用于我的页面。我在多个页面上使用过它。

现在我的问题是:

  1. 我是否可以限制登录视图显示为非成员即使他们已登录。换句话说,登录视图应仅显示为typeA成员而不是typeB。

  2. 有没有办法可以编程方式为特定用户隐藏Loggedin / AnonymousTemplate。 例如:在代码背后:

    If(type of member == A) then
       Loggedin.visible = true
    else
     loggedin.visible = false
    end if
    
  3. 我知道#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>
    

2 个答案:

答案 0 :(得分:3)

查看the RoleGroups property

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

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

答案 1 :(得分:0)

而理查兹的回答提供了更好的方法来处理基于角色的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;