C# 在站点上获取角色名称

C# 在站点上获取角色名称,c#,asp.net-mvc,identity,C#,Asp.net Mvc,Identity,我正在尝试在我的站点上显示用户配置文件 例如:“等级:所有者” 但我不知道如何显示排名名称。这是我目前拥有的代码: <p>@if (Model.Roles.Any() != false) { <b>@Model.Roles.Any()</b> } else { <b>Member&l

我正在尝试在我的站点上显示用户配置文件

例如:“等级:所有者” 但我不知道如何显示排名名称。这是我目前拥有的代码:

<p>@if (Model.Roles.Any() != false)
             {

             <b>@Model.Roles.Any()</b>

             }
             else
             {
                 <b>Member</b>
             }
    </p>

那么,我需要什么才能说出我的角色名呢?

首先@Model.Roles是一个类型列表。因此,如果您希望看到该集合中的某些内容,则必须对其进行迭代

// this will never generate readable output, it will always print something like this: System.Collections.Generic.List`1[Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole]
<b>@Model.Roles</b>
//这将永远不会生成可读的输出,它将始终打印如下内容:System.Collections.Generic.List`1[Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole]
@模型.角色
第二:类型不包含任何包含角色名的属性。只有roleid和userid。我想你得从别的地方买

试试这段代码

public static class Extension
{
   public static string GetRoleList(this List<Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole> roles)
   {
      string rolelist="";
      if(roles.Count==0)
         return "None";
      foreach (var item in roles)
      {
         rolelist+=item+",";
      }
      return rolelist.TrimEnd(',');
   }
}
公共静态类扩展
{
公共静态字符串GetRoleList(此列表为角色)
{
字符串rolelist=“”;
if(roles.Count==0)
返回“无”;
foreach(角色中的变量项)
{
角色列表+=项目+“,”;
}
返回rolelist.TrimEnd(',');
}
}
然后在视图中使用它作为

<b>@Model.Roles.GetRoleList()</b>
@Model.Roles.GetRoleList()

如果(Model.Roles.Any()!=null)
始终为真。相反,
if(Model.Roles.Any())
IdentityUserRole的结构是什么?@tchelidze我这样做是因为如果它为null,那么它们将获得成员。ussal结构注意,
Model.Roles.Any()
不能为null,因为
bool
不是可为null的类型。如果
Model
Model.Roles
可以为null,请使用[null传播]()代替
Model?.Roles?.Any()
我相信它的角色列表。尝试创建一个方法以返回角色数组的字符串表示形式。当我添加它时,它会显示:“非invocable成员”System.Collections.Generic.List.Count”不能用作方法。抱歉,我的错误。请删除方法说明符()从计数。然后它说:错误1扩展方法必须是staticYes这是真的。类和方法都需要是staticYes,那么我应该怎么做呢?:3
<b>@Model.Roles.GetRoleList()</b>