Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何根据登录用户角色显示aspx页面的某些部分_Asp.net_User Roles - Fatal编程技术网

Asp.net 如何根据登录用户角色显示aspx页面的某些部分

Asp.net 如何根据登录用户角色显示aspx页面的某些部分,asp.net,user-roles,Asp.net,User Roles,我有一个asp.net网站。每个页面上都有一些内容,每个登录用户都有一些角色。我想根据登录用户角色隐藏和显示页面内容。我该怎么做?谢谢 我知道asp.net中的身份验证和授权表单…我的问题是关于页面内容的 或 我想知道拥有一些.ascx(用户控件)然后将它们添加到.aspx页面是否正确..然后根据可见性属性和用户角色隐藏和显示aspx页面的部分..这是最好的方法吗?谢谢。应该不会太难:根据面板中的角色(或任何其他适合您执行此任务的元素),包装您要显示/隐藏的站点部分。 在您的代码隐藏页面加载(或

我有一个asp.net网站。每个页面上都有一些内容,每个登录用户都有一些角色。我想根据登录用户角色隐藏和显示页面内容。我该怎么做?谢谢 我知道asp.net中的身份验证和授权表单…我的问题是关于页面内容的


我想知道拥有一些.ascx(用户控件)然后将它们添加到.aspx页面是否正确..然后根据可见性属性和用户角色隐藏和显示aspx页面的部分..这是最好的方法吗?谢谢。

应该不会太难:根据面板中的角色(或任何其他适合您执行此任务的元素),包装您要显示/隐藏的站点部分。 在您的代码隐藏页面加载(或页面初始化,不确定该页面)中,执行以下操作

if (Roles.IsUserInRole("rolename")
{
    content.Visible = true;
}
else
{
    content.Visible = false;
}
其中content是aspx页面上面板的ID。 上面的代码也可以写成

content.Visible = Roles.IsUserInRole("rolename");
检查角色的另一种方法是

User.IsInRole("rolename")

这实际上是我更喜欢使用的方法,因为它看起来稍微干净一点。Roles.IsUserInRole方法还可用于检查特定用户是否具有特定角色,但在这种情况下,我们对此不感兴趣。

我终于找到了合适的答案。.我不想设置可见性属性(是的,不难猜测!),因为它会使我的代码变脏,而且不方便…假设我有一个页面Default.aspx,在Default.aspx页面中有3个角色Admin、A、B…我想根据用户角色显示内容,所以我使用Loginview及其模板,如下所示:

<asp:LoginView runat="server" ID="loginviewControl1">
   <AnonymousTemplate>
        <asp:HyperLink runat="server" ID="lnkLogin" Text="Log In" NavigateUrl="~/Account/Login.aspx"></asp:HyperLink>
   <Anonymous:AnonymousPart ID = "anonym" runat="server" />
   </AnonymousTemplate>
   <LoggedInTemplate>
        <asp:Label runat="server" ID="WelcomeBackMessage"></asp:Label>
    </LoggedInTemplate>
   <RoleGroups>
       <asp:RoleGroup Roles="Admin">
           <ContentTemplate>
               <Admin:AdminPart ID ="adminContent" runat="server" />
           </ContentTemplate>
       </asp:RoleGroup>
       <asp:RoleGroup Roles="A">
           <ContentTemplate>
              <RoleA:RoleAPart ID = "RoleAContent" runat="server"/>
           </ContentTemplate>
       </asp:RoleGroup>
       <asp:RoleGroup Roles="B">
           <ContentTemplate>
             <RoleB:RoleBPart ID = "RoleBContent" runat="server" />
           </ContentTemplate>
       </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>


我认为这比设置可见性要好,因为有时候很难处理!!当具有角色A的用户登录时,显示的唯一内容是RoleA:ROLEPART part

是的,这也更好,因为数据可能是私有的和隐藏的,并且元素不会阻止数据出现在HTML中。
protected void Page_Load(object sender, EventArgs e)
    {

    }