2013-06-26 44 views
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> 
} 

有什么想法?

+0

你在'模型'中有什么? –

+0

哦,是的,Model包含UserProfile类的字段。它工作正常,并显示配置文件,但我似乎无法通过角色筛选它们。 – nouptime

回答

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> 

如果你想LIMITE该视图管理员,您可以使用:

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

希望它的帮助

+0

最棒的! 'if(usersInRole.Contains(item.Firstname))'修复了它。我把它倒过来哈哈。太感谢了! – nouptime

+0

不客气;) –

0

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

@FirstName 

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

+0

试过,但没有奏效。感谢您的回复。 – nouptime

0

如果您想显示基于角色的内容。 试试这个

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

我已经添加了该功能,并且可以向管理员显示不同的内容。谢谢。 – nouptime

相关问题