Я занимаюсь разработкой простого веб-приложения, использующего Identity. У меня есть Административный контроллер:
namespace BAY.Controllers
{
public class AdministrationController : Controller
{
private readonly RoleManager<IdentityRole> roleManager;
public AdministrationController(RoleManager<IdentityRole> roleManager)
{
this.roleManager = roleManager;
}
public AdministrationController()
{
}
[HttpGet]
public ActionResult CreateRole()
{
return View();
}
[HttpPost]
public ActionResult CreateRole(CreateRoleViewModel model)
{
if (ModelState.IsValid)
{
IdentityRole identityRole = new IdentityRole
{
Name = model.Name
};
IdentityResult result = roleManager.Create(identityRole);
if (result.Succeeded)
{
return RedirectToAction("CreateRole", "Administration");
}
}
return View(model);
}
}
}
Это моя модель:
namespace BAY.Models
{
public class CreateRoleViewModel
{
[Required(ErrorMessage ="Rol Adı alanı boş bırakılamaz")]
[Display(Name="Rol Adı")]
public string Name { get; set; }
}
}
Наконец, это мой взгляд на ввод новой роли:
@model BAY.Models.CreateRoleViewModel
@{
ViewBag.Title = "Yeni Bir Rol Oluştur";
}
<h2>@ViewBag.Title.</h2>
<div class="row">
<div class="col-md-8">
<section id="CreateRoleForm">
@using (Html.BeginForm("CreateRole", "Administration", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{@Html.AntiForgeryToken()
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.Name, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Rol Oluştur" class="btn btn-default" />
</div>
</div>
}
</section>
</div>
</div>
I запустите приложение и перейдите к Administration / CreateRole, введите имя новой роли как Test или что-то еще, но приложение вылетает на линии IdentityResult result = roleManager.Create(identityRole);
с кодом ошибки: System.ArgumentNullException: 'Value cannot be null. Parameter name: manager'
Я запустился в режиме отладки, когда наведите курсор мыши на result
переменная имеет значение ноль , когда я наведите курсор мыши на identityRole
его свойство Name
равно Test , его свойство Id
равно что-то ( я имею в виду не нуль), а его свойство Users
равно null . Пожалуйста, помогите, заранее спасибо.