Создав новую роль в веб-приложении Asp. Net, я получаю эту ошибку: System.ArgumentNullException: «Значение не может быть нулевым. Имя параметра: менеджер - PullRequest
0 голосов
/ 22 апреля 2020

Я занимаюсь разработкой простого веб-приложения, использующего 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 . Пожалуйста, помогите, заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...