您可以尝试这种方式来满足您的要求
查看模型:
public class CheckBoxViewModel
{
public List<Plans> plans { get; set; }
}
public class Plans
{
public int PlanId { get; set; }
public string PlanName { get; set; }
public bool IsSelected { get; set; }
}
控制器加载视图模型时:
public IActionResult LoadCheckBoxFromViewModel()
{
var plan = new List<Plans>()
{
new Plans(){ PlanName = "Plan A",PlanId =1, IsSelected= false},
new Plans(){ PlanName = "Plan B",PlanId =2, IsSelected= false},
new Plans(){ PlanName = "Plan C",PlanId =3, IsSelected= false},
new Plans(){ PlanName = "Plan D",PlanId =4, IsSelected= false}
};
var model = new CheckBoxViewModel();
model.plans = plan;
return View(model);
}
注意:我已经加载了 checkbox,其中包含几个要检查的预定义值。如果您需要一个复选框,那么您可以根据您的要求简单地自定义它。在这种情况下,您不需要遍历 plan 复选框列表。
LoadCheckBoxFromViewModel 控制器的视图:
@model CheckBoxViewModel
@{
ViewData["Title"] = "LoadCheckBoxFromViewModel";
}
<h4>Load CheckBox From ViewModel</h4>
<h4>Submit value to Controller</h4>
<hr />
@using (Html.BeginForm("GetValueFromCheckBoxUsingViewModel", "StackOverFlow"))
{
for (int i = 0; i < Model.plans.Count; i++)
{
@Html.CheckBoxFor(r => Model.plans[i].IsSelected)
<label> @Model.plans[i].PlanName</label>
@Html.HiddenFor(h => @Model.plans[i].PlanId)
@Html.HiddenFor(h => @Model.plans[i].PlanName)
}
<input id="Button" type="submit" value="Save" class="btn btn-primary" />
}
提交复选框时的控制器:
[HttpPost]
public IActionResult GetValueFromCheckBoxUsingViewModel(CheckBoxViewModel checkBoxViewModel)
{
return View(checkBoxViewModel);
}
输出:
希望它能指导你。