In meinem ViewModel habe ich die folgenden zwei Listen (eine wird verwendet, um alle verfügbaren Kategorien im Formular anzuzeigen und die andere wird nur für den ausgewählten Benutzer verwendet Kategorie-Werte):Checkbox-Listenwerte sind nicht bindend für View GET-Anforderung in ASP.NET Core MVC
public List<CategoryViewModel> Categories{ get; set; }
public List<string> SelectedCategoryValues { get; set; }
meiner Ansicht ich habe folgendes innerhalb eines meiner Formen:
@foreach (var category in Model.Categories) {
<div class="checkbox">
<label><input type="checkbox" name="SelectedCategoryValues"
value="@category.Value">@category.Name</label>
</div>
}
Wenn Sie das Formular absenden das Modell Binder korrekt SelectedCategoryValues Liste verbindlich.
Beim Laden der Seite werden die ausgewählten Kontrollkästchen jedoch nicht automatisch ausgewählt.
Der folgende Code ist in meinem bearbeiten GET Aktion:
var vm = new ProductEditViewModel()
{
Id = product.Id,
Name = product.Name,
Categories = new List<CategoryViewModel>()
{
new CategoryViewModel() { Name = "Category 1", Value = "category1" },
new CategoryViewModel() { Name = "Category 2", Value = "category2" },
new CategoryViewModel() { Name = "Category 3", Value = "category3" }
},
SelectedCategoryValues = productCategories.Select(c => c.Value).ToList()
};
return View(vm);