2015-06-16 7 views
0

У меня есть MasterPage, в котором я отображаю две вещи: одно имя пользователя, которое я показываю, со следующей командой <%: Context.User.Identity.GetUserName() %>, а другая - роль пользователя.Как я могу показать имя роли для пользователя в ASP.NET

Как я могу отобразить его?

спасибо.

+0

При входе пользователя в создании своей идентичности - так или иначе - когда это будет сделано, вы также должны кода в роли. Я считаю, что это метод расширения. Они - методы расширения, потому что чтение из материала Identity может быть кошмаром. –

ответ

0

Попробуйте это так, если у вас есть доступ к UserManager:

UserManager.FindByName(Context.User.Identity.GetUserName()).Roles 

Или, если у вас есть доступ к любой основе идентификации пользователя, вы должны быть в состоянии получить роль также, как это:

AppUser.Roles; 

Или поиск любого идентификатора пользователя с определенным именем и получить его роли:

UserManager.FindByName("Name").Roles; 

Я использую Identi ти 2,0

UPDATE:

Так что если у вас есть UserManager доступа и RoleManager в коде мастер-страницы, вы можете написать метод, который получает роли пользователей, как это:

public List<string> GetUserRoles(string username) 
    { 
     List<string> ListOfRoleNames = new List<string>(); 
     var ListOfRoleIds = UserManager.FindByName(username).Roles.Select(x => x.RoleId).ToList(); 
     foreach(string id in ListOfRoleIds) 
     { 
      string rolename = RoleManager.FindById(id).Name; 
      ListOfRoleNames.Add(rolename); 
     } 

     return ListOfRoleNames; 
    } 

Тогда это до вас как вы это называете в своем представлении или заполняете эти роли пользователю во время загрузки страницы.

+0

Версия моей идентичности - 2.2.1. У меня есть доступ к UserManager, но никакого метода нет. Есть еще один способ показать роль пользователя в MasterPage? Может быть, в коде? –

+0

Почему бы не создать метод? –

0

Поскольку вы используете механизм просмотра веб-форм, я предполагаю, что вы должны использовать членство asp.net, доступное для MVC 2.0.

Там может быть несколько ролей, назначенные пользователю, следующий цикл будет и выводить их:

<% foreach(var role in Roles.GetRolesForUser()) 
{ %> 
    <%:role%> 
<% } %>