Я хочу создать роли с соответствующими утверждениями в asp.net core 2+, поэтому я создаю вид, подобный:
@page
@model Security.Dto.Models.ApplicationRoleModel
<form asp-controller="security" asp-action="CreateRole" method="post">
<h4>Create new Role</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group" id="item-list">
<label>Role Name</label>
<input asp-for="RoleClaimList[0].Role.Name" class="form-control roles" />
</div>
<a href="#" id="add">Add another</a>
<div class="form-group" id="claim-list">
<label>Claim Type</label>
<input asp-for="RoleClaimList[0].ClaimList[0].Type" class="form-control " />
<label>Claim Value</label>
<input asp-for="RoleClaimList[0].ClaimList[0].Value" class="form-control claims" />
</div>
<br />
<button type="submit" class="btn btn-default">Create</button>
</form>
@section Scripts {
<script>
$(function () {
$("#add").click(function (e) {
e.preventDefault();
var i = ($(".roles").length);
var n = '<label>Role Name</label><input class="form-control roles" name="RoleClaimList[' + i + '].Role.Name" />'
$("#item-list").append(n);
});
});
</script>
}
Контроллер:
public async Task<IActionResult> CreateRole(ApplicationRoleModel model)
{
try
{
foreach (var item in model.RoleClaimList)
{
var roleExists = await _roleManager.RoleExistsAsync(item.Role.Name);
if (roleExists) continue;
var createRole = _roleManager.CreateAsync(item.Role);
foreach (var claim in item.ClaimList)
{
await _roleManager.AddClaimAsync(item.Role, claim);
}
}
return Ok();
}
catch (Exception e)
{
return BadRequest();
}
}
ApplicationRoleModel:
public class ApplicationRoleModel
{
public List<RoleClaimModel> RoleClaimList { get; set; }
}
RoleClaimModel:
public class ClaimsToRoleModel
{
public List<RoleClaimModel> RoleClaimList { get; set; }
}
public class RoleClaimModel
{
public ApplicationRole Role { get; set; }
public List<Claim> ClaimList { get; set; }
}
Поэтому, когда я запускаю и отлаживаю его, Role
приходит правильно, но ClaimList
всегда считает 0 или приходит ноль
Кто-то смотрит, что я делаю не так? Как правильно отобразить модель свойства ClaimList
из вида?
Привет