MVC5为复杂类创建表单
本文关键字:创建 表单 复杂 MVC5 | 更新日期: 2023-09-27 18:11:10
我将向用户展示一个表单,让他们填写表单以获取一些报价。将有一系列的对象(约15左右),我想作为复选框呈现。问题是,我不想在15个工具中硬编码,我希望它们在每个用户的基础上动态构建。因此,我提出的模型的简化版本看起来像这样:
public class InqueryViewModel
{
public string Origin { get; set; }
public string Destination { get; set; }
public decimal Weight { get; set; }
public IEnumerable<Option> AdvancedOptions { get; set; }
}
public class Option
{
public bool Selected { get; set; }
public string Type { get; set; }
}
问题是,我不知道如何绑定AdvancedOptions。我试过了:
@foreach (var option in Model.AdvancedOptions)
{
<div class="col-xs-4">
<div class="col-xs-1">
@Html.CheckBoxFor(x => option.Selected)
</div>
<div class="col-xs-2">
@option.Type
</div>
<div class="col-xs-1"></div>
</div>
}
但这不起作用。我很新的尝试使用前端表单与MVC,所以我可能只是去这个错误的方式。有什么建议吗?
您正在尝试对列表进行建模绑定。实现这一点的最简单方法是将视图模型更改为使用IList<Option>
,然后执行以下操作:
@for(var i = 0; i < Model.AdvancedOptions.Count; i++)
{
@Html.CheckBoxFor(m => Model.AdvancedOptions[i].Selected)
}
参见Phil Haacks关于绑定到集合的文章了解更多信息