ASP.NET MVC Добавление обязательной аннотации к расширенной IdentityRole - PullRequest
0 голосов
/ 26 августа 2018

Я только что расширил свою таблицу AspNetRoles следующим образом:

public class AspApplicationRoles : IdentityRole
{
    public AspApplicationRoles() : base() { }
    public AspApplicationRoles(String Name) : base(Name) { }
    [Required]
    public String ApplicationId { get; set; }
    public AspNetApplications Application { get; set; }
}

Как сделать свойство Name Обязательным? Является ли это возможным? Пока я могу только добавить его в свой ApplicationId. Кроме того, как мне добавить новую роль? Пока что я использую RoleManager, чтобы добавить его, он запрашивает только имя.

1 Ответ

0 голосов
/ 26 августа 2018

В качестве опции вы можете создать новую модель представления для создания роли.Это похоже на то, что было сделано для пользователей в шаблоне проекта MVC по умолчанию при включении аутентификации отдельных пользователей.Если вы посмотрите на AccountViewModels.cs, вы увидите пару моделей представлений.

Например, вы можете создать следующий класс:

public class ApplicationRoleCreateModel
{
    [Required]
    public string Name { get; set; }
    [Required]
    [Display(Name = "Application Id")]
    public string ApplicationId { get; set; }
}

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

[Authorize]
public class RoleController : Controller
{
    private ApplicationRoleManager _roleManager;

    public RoleController() { }

    public RoleController(ApplicationRoleManager roleManager)
    {
        RoleManager = roleManager;
    }

    public ApplicationRoleManager RoleManager
    {
        get
        {
            return _roleManager ?? 
                HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
        }
        private set { _roleManager = value; }
    }

    public ActionResult Index()
    {
        var model = RoleManager.Roles.ToList();
        return View(model);
    }

    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public async Task<ActionResult> Create(ApplicationRoleCreateModel model)
    {
        if (ModelState.IsValid)
        {
            var result = await RoleManager.CreateAsync(new ApplicationRole()
            {
                Name = model.Name,
                ApplicationId = model.ApplicationId
            });
            if (result.Succeeded)
                return RedirectToAction("Index");
            else
                foreach (var error in result.Errors)
                    ModelState.AddModelError("", error);
        }
        return View();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...