0

我试图仅在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>
 }

有什么想法吗?

4

3 回答 3

0

它不起作用,因为您的 for each 循环正在枚举该角色的​​正确用户。但是您不会在任何地方输出他们的用户名。如果你包括

@FirstName

在里面你会看到每个用户。

于 2013-06-26T07:44:34.497 回答
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")){}

希望有帮助

于 2013-06-26T07:48:26.303 回答
0

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

 @if (Request.IsAuthenticated && HttpContext.Current.User.IsInRole("Admin"))
  { 
       //show all profiles
  }
  else
  {
       //show only regular users
  }
于 2013-06-26T07:49:05.890 回答