Я видел другие темы на эту тему, но у меня возникли проблемы с верным синтаксисом / настройкой. В конечном счете, контроллер не может видеть содержимое списка ролей, когда он возвращается из редактирования.
View
@model Models.Volunteer
@foreach (var item in Model.Roles)
{
<input type="checkbox" asp-for="@item.Selected" />
<label asp-for="@item.Selected">@item.RoleName</label>
<input type="hidden" asp-for="@item.RoleId" />
<input type="hidden" asp-for="@item.RoleName" />
<br />
}
<input type="submit" value="Save" class="btn btn-default" />
Модель
public abstract class BaseVolunteer
{
[Key]
public int Recno { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string City { get; set; }
[NotMapped]
[Display(Name = "Roles")]
public List<Role> Roles { get; set; }
}
public class Role
{
[Key]
public String RoleId { get; set; }
public String RoleName { get; set; }
public bool Selected { get; set; }
}
Контроллер
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Recno,FirstName,LastName,Email,City,Roles")] Volunteer volunteer)
{
}
Добровольный объект в контроллере правильно возвращает другие значения ... но объект Roles равен NULL, несмотря на то, что он правильно заполнен для отображения.