应用程序中有剃须刀复选框控件需要为每个集合重复。但是对于第二个以后的集合号,代码下面没有任何内容作为复选框的值:
<div class="checkbox">
<label class="checkbox-inline">
@Html.CheckBoxFor(m => m.Collection[i].Item)Some Label
</label>
</div>
viewmodel是:
public class Items{
public List<Collection> Collection{get; set;}
}
public class Collection{
public bool Item { get; set; }
}
答案 0 :(得分:1)
假设您的HttpPost操作参数是
的对象[HttpPost]
public ActionResult Create(Items model)
{
//to do : Save and Redirect
}
您需要确保表单中的复选框具有与ViewModel属性层次结构匹配的名称。因此,要使模型绑定起作用,您需要使用名称为
的复选框<input name="Collection[1].Item" type="checkbox" >
所以在你看来,确保你操纵这个名字
@model Items
@using (Html.BeginForm())
{
for (int index = 0; index < Model.Collection.Count; index++)
{
var collection = Model.Collection[index];
@Html.CheckBox("Collection["+index+"].Item",collection.Item)
}
<input type="submit"/>
}
另一个(更好)选项是使用编辑器模板。使用此方法,您无需操作表单字段名称。 Here是一个完整的帖子,逐步解释
答案 1 :(得分:0)
而不是选择项目写入
<div class="checkbox">
<label class="checkbox-inline">
@Html.CheckBoxFor(m => m.Collection[i].selected)Some Label
</label>
</div>
或试试这个
@Html.CheckBoxFor(m => m[i].Checked,new {Style ="vertical-align})