Я использовал следующий учебник http://www.dotnetfunda.com/articles/show/2898/working-with-roles-in-aspnet-identity-for-mvc, чтобы добавить роли в мое приложение. Мне удалось добавить роль для пользователя, который хранится в моей базе данных. Однако я не могу указать роли, которые были назначены этому пользователю. Я получаю следующую ошибку:MVC возвращает роли пользователей в представление
Ссылка на объект не установлена в экземпляр объекта.
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
Мой контроллер выглядит следующим образом
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetRoles(string UserName)
{
ApplicationDbContext context = new ApplicationDbContext();
if (!string.IsNullOrWhiteSpace(UserName))
{
ApplicationUser user = context.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
var account = new AccountController();
//this.UserManager.GetRoles(user.Id);
ViewBag.RolesForThisUser = account.UserManager.GetRoles(user.Id);
// prepopulat roles for the view dropdown
var list = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;
}
return View("ManageUserRoles");
}
и мой взгляд
<hr />
<h3>Get Roles for a User</h3>
@using (Html.BeginForm("GetRoles", "Account"))
{
@Html.AntiForgeryToken()
<p>
Username : @Html.TextBox("UserName")
<input type="submit" value="Get Roles for this User" />
</p>
}
@if (ViewBag.RolesForThisUser != null)
{
<div style="background-color:yellow;">
<h3>Roles for this user </h3>
<ol>
@foreach (string s in ViewBag.RolesForThisUser)
{
<li>@s</li>
}
</ol>
</div>
}
Возможный дубликат [MVC5 Account Controller null reference exception exception] (http://stackoverflow.com/questions/27750918/mvc5-account-controller-null-reference-exception) –