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,所以我可能只是去这个错误的方式。有什么建议吗?

MVC5为复杂类创建表单

您正在尝试对列表进行建模绑定。实现这一点的最简单方法是将视图模型更改为使用IList<Option>,然后执行以下操作:

@for(var i = 0; i < Model.AdvancedOptions.Count; i++)
{
    @Html.CheckBoxFor(m => Model.AdvancedOptions[i].Selected)
}

参见Phil Haacks关于绑定到集合的文章了解更多信息