У меня есть метод для добавления новых ролей, таких как:
public async Task<IActionResult> CreateRole(ApplicationRoleModel model)
{
try
{
foreach (var role in model.RoleList)
{
var roleExists = await _roleManager.RoleExistsAsync(role.Name);
if (roleExists) continue;
var createRole = _roleManager.CreateAsync(role);
}
return Ok();
}
catch (Exception e)
{
return BadRequest();
}
}
Итак, как вы можете видеть, я использую предложение foreach
для доступа к модели с IEnumerable
из ApplicationRole
, например:
public class ApplicationRoleModel : ClaimsToRoleModel
{
public IEnumerable<ApplicationRole> RoleList { get; set; }
}
Итак, как вы можете видеть в foreach, я могу получить доступ к role.Name
из RoleList (ApplicationRole)
, я проверил его с почтальоном, и он работает, он добавил новую роль успешно, теперь вместо почтальона я хочу создать представление для создания новой роли, поэтому Я пытаюсь:
@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">
<label asp-for="RoleList.Name">Role Name</label>
<input asp-for="RoleList.Name" class="form-control" />
</div>
<button type="submit" class="btn btn-default">Create</button>
</form>
Но когда я пытаюсь скомпилировать проект, он возвращает:
«IEnumerable» не содержит определения для
«Имя» и метод расширения «Имя», принимающий первый аргумент
тип 'IEnumerable' может быть найден (вам не хватает
используя директиву или ссылку на сборку?)
Итак, как я могу получить доступ к свойству Name
ApplicationRole
для назначения модели из вида? Привет
Примечание: я также пытаюсь получить к нему доступ, например:
@for(Int32 i = 0; i < this.Model.RoleList.Count; i++ ) {
<div class="form-group">
<label asp-for="RoleList[i].Name">Role Name</label>
<input asp-for="RoleList[i].Name" class="form-control" />
</div>
}
Но я получаю:
Невозможно применить индексирование с помощью [] к выражению типа
'IEnumerable'