我有一个包含几个列表的模型:
[Display(Name = "Facilities")]
public List<facility> Facilities { get; set; }
[Display(Name = "Accreditations")]
public List<accreditation> Accreditations { get; set; }
我最初从我的控制器填充这些列表:
public ActionResult Register()
{
var viewModel = new RegisterModel();
viewModel.Facilities = m_DBModel.facilities.ToList();
viewModel.Accreditations = m_DBModel.accreditations.ToList();
return View(viewModel);
}
当他们到达我的视野时,他们会填充数据库记录(很棒)。然后,我将模型传递给将这些列表显示为复选框的局部视图,以供用户操作(我根据另一个建议尝试使用 for 循环而不是 foreach 循环,没有区别):
@model LanguageSchoolsUK.Models.RegisterModel
@foreach (var item in Model.Facilities)
{
@Html.Label(item.name);
@Html.CheckBox(item.name, false, new { id = item.facility_id, @class = "RightSpacing", @description = item.description })
}
当我提交表单并最终回到我的控制器时,这次调用控制器上的重载注册函数:
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Do stuff
}
return View(model);
}
问题是包含列表(设施和认证)的模型参数告诉我列表为空。
请有人告诉我我做错了什么,为什么它们没有填充我最初通过的集合,并希望有一种方法可以询问哪些已经检查过的集合?
谢谢。