显示特定角色的用户配置文件

时间:2013-06-26 07:38:42

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在尝试仅以RegularUser角色显示用户的个人资料。只有管​​理员才能查看所有配置文件,无论角色如何。

这是我到目前为止在视图中所拥有的内容,但它似乎不起作用。关于它的一些事情看起来不对:

 @string[] usersInRole = Roles.GetUsersInRole("RegularUser");
 @foreach (var item in Model)
 {
    <ul>
    @foreach (string FirstName in usersInRole)
    {
        <li>
            <h3>@Html.DisplayFor(model => item.FullName)</h3>
            @if (item.Image != null)
            {
                <img src="@Url.Content(item.Image)" alt="" />
            }
            else
            {
                <br />
            }
        </li>
    }
    </ul>
 }

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

它不起作用,因为你的每个循环都枚举了该角色的正确用户。但是你没有在任何地方输出他们的用户名。如果你包括

@FirstName

每个人都会看到用户。

答案 1 :(得分:0)

我建议您检查模型中的用户是否处于RegularUser角色:

@string[] usersInRole = Roles.GetUsersInRole("RegularUser");
<ul>
@foreach (var item in Model)
{
    if(usersInRole.Contains(item.Firstname))
    {
        <li>
            <h3>@Html.DisplayFor(model => item.FullName)</h3>
            @if (item.Image != null)
            {
                <img src="@Url.Content(item.Image)" alt="" />
            }
            else
            {
                <br />
            }
        </li>
    }
}
</ul>

如果您想将此视图限制为管理员,可以使用:

@if(User.IsInRole("Administrator")){}

希望有所帮助

答案 2 :(得分:0)

如果要根据角色显示内容。 试试这个

 @if (Request.IsAuthenticated && HttpContext.Current.User.IsInRole("Admin"))
  { 
       //show all profiles
  }
  else
  {
       //show only regular users
  }