MVC表单:发布属性列表
本文关键字:属性 列表 布属性 表单 MVC | 更新日期: 2023-09-27 18:30:00
我有一个视图模型,它的List属性类型为X。当我试图将此属性发布到服务器时,收到的列表总是为null。
从客户端传输的数据如下所示:
...
XXX.[0].Test:false
XXX.[0].Test1:true
XXX.[1].Test:false
XXX.[1].Test1:false
...
ViewModels如下所示:
class ViewModel
{
public ViewModel()
{
this.XXX = new List<TestViewModel>()
}
public List<TestViewModel> XXX { get; set; }
}
public TestViewModel {
public bool Test{ get; set; }
public bool Test1 { get; set; }
}
使用编辑模板生成视图
形式:
using (Html.BeginForm(null, null, FormMethod.Post))
{
@Html.EditorFor(m => m.ViewModel)
}
编辑器模板:
@model List<TestViewModel>
@for (int i = 0; i < Model.Count; i++)
{
@Html.CheckBoxFor(p => Model[i].Test)
@Html.CheckBoxFor(p => Model[i].Test1)
}
问题似乎是额外的一点。。。(XXX**.**[0])感谢
更改EditorTemplate
,使模型成为对象(而不是集合)
TestViewModel.cshtml
@model TestViewModel
@Html.CheckBoxFor(m => m.Test)
@Html.CheckBoxFor(m => m.Test1)
以及的主视图
@model ViewModel
using (Html.BeginForm(null, null, FormMethod.Post))
{
@Html.EditorFor(m => m.XXX)
....
}
EditorFor()
方法将使用索引器正确命名控件,索引器看起来像
<input type="checkbox" name="XXX[0].Test" .../>
<input type="hidden" name="XXX[0].Test" .../>
....
<input type="checkbox" name="XXX[1].Test" .../>
<input type="hidden" name="XXX[1].Test" .../>