我正在尝试在复选框的value
标记内使用对象的实例,这似乎不起作用。
我的观看代码:
@using (@Html.BeginForm("Purchase", "Upload"))
{
foreach (var pic in Model) //pic is my class, Picture
{
<input type="checkbox" style="float: none" class="bootstrap-checkbox btn.btn-large" value="@pic" name="purchasedItems">
}
<input type="submit"/>
}
控制器代码:
[HttpPost]
public ActionResult Purchase(IEnumerable<Picture> purchasedItems)
{
//My collection is empty here
}
如果我使用pic.Id
并收到一组int而不是图片集,一切正常。
使用Id而不是对象本身是更好的方法吗?或者我应该使用对象并以某种方式修复我的代码?
答案 0 :(得分:2)
是的,最好发送ID列表而不是对象本身的List,主要有两个原因:
答案 1 :(得分:1)
您可以使用表单集合从非标准控件中检索值:
public ActionResult EditProgramTemplateLines(FormCollection formCollection)
{
for(var i=0; i< chkArrayLength; i++)
{
var chkId = formCollection.GetValues(i); // [1,2,3,4]
...
}
}
答案 2 :(得分:1)
您可以使用
foreach (var pic in Model)
{
@Html.CheckboxFor(i => pic, new { @class = "bootstrap-checkbox btn.btn-large" });
}
然后让Controller定期处理它。