gpt4 book ai didi

c# - ASP.NET MVC 向扩展的 IdentityRole 添加必需的注释

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:35 25 4
gpt4 key购买 nike

我刚刚像这样扩展了我的 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 添加它,它只会询问名称。

最佳答案

作为一个选项,您可以为角色创建创建一个新的 View 模型。这类似于启用个人用户身份验证时在默认 MVC 项目模板中为用户所做的事情。如果您查看 AccountViewModels.cs,您会看到几个 View 模型。

例如,您可以创建以下类:

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

假设您创建了包含自定义属性的 ApplicationRoledescribed here ,然后可以创建如下角色 Controller 类:

[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();
}
}

关于c# - ASP.NET MVC 向扩展的 IdentityRole 添加必需的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com