Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET核心MVC中,复选框列表值未绑定到查看获取请求_C#_Asp.net_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 在ASP.NET核心MVC中,复选框列表值未绑定到查看获取请求

C# 在ASP.NET核心MVC中,复选框列表值未绑定到查看获取请求,c#,asp.net,asp.net-core,asp.net-core-mvc,C#,Asp.net,Asp.net Core,Asp.net Core Mvc,在我的ViewModel中,我有以下两个列表,一个用于显示表单中的所有可用类别,另一个仅用于用户选择的类别值: public List<CategoryViewModel> Categories{ get; set; } public List<string> SelectedCategoryValues { get; set; } 在我看来,我的一张表格中包含以下内容: @foreach (var category in Model.Categories) {

在我的ViewModel中,我有以下两个列表,一个用于显示表单中的所有可用类别,另一个仅用于用户选择的类别值:

public List<CategoryViewModel> Categories{ get; set; }
public List<string> SelectedCategoryValues { get; set; }
在我看来,我的一张表格中包含以下内容:

@foreach (var category in Model.Categories) {
     <div class="checkbox">
          <label><input type="checkbox" name="SelectedCategoryValues" 
          value="@category.Value">@category.Name</label>
     </div>
}
提交表单时,模型绑定器正确绑定SelectedCategoryValues列表

但是,加载页面时,所选复选框不会自动选择

以下代码位于“编辑获取”操作中:


您需要在CategoryViewModel中包含类似bool IsSelected{get;set;}的内容,并在控制器中赋值

var vm = new ProductEditViewModel()
{
    Id = product.Id,
    Name = product.Name,
    Categories = new List<CategoryViewModel>()
    {
        new CategoryViewModel() { Name = "Category 1", Value = "category1",
         IsSelected = productCategories.Where(c => c.Value == "category1").Count() > 0 ? true : false},
         //do the same
        //new CategoryViewModel() { Name = "Category 2", Value = "category2" },
        //new CategoryViewModel() { Name = "Category 3", Value = "category3" }
    },
    //not required
    //SelectedCategoryValues = productCategories.Select(c => c.Value).ToList()
};

return View(vm);
在我看来

@foreach (var category in Model.Categories) {
     <div class="checkbox">
          <label><input type="checkbox" checked="@category.IsSelected" name="SelectedCategoryValues" 
          value="@category.Value">@category.Name</label>
     </div>
}
@foreach (var category in Model.Categories) {
     <div class="checkbox">
          <label><input type="checkbox" checked="@category.IsSelected" name="SelectedCategoryValues" 
          value="@category.Value">@category.Name</label>
     </div>
}