如何处理ASP.NET MVC表单中的复选框?
您最好的选择是搜索更新的问题,或搜索下面的答案,寻找您的MVC的特定版本,因为现在许多答案已经过时。
如果您确实找到适合您的版本的答案,请确保答案包含您正在使用的MVC版本。
(原始问题从下面开始)
这对我来说似乎有点奇怪,但就我所知,这就是你如何做到的。
我有一组对象,我希望用户选择其中一个或多个。这对我说“形式有复选框”。我的对象没有任何“选择”的概念(它们是通过反序列化wcf调用形成的基本POCO)。所以,我做了以下事情:
public class SampleObject{ public Guid Id {get;set;} public string Name {get;set;}}
在视图中:
<% using (Html.BeginForm()) {%> <%foreach (var o in ViewData.Model) {%> <%=Html.CheckBox(o.Id)%> <%= o.Name %> <%}%> <input type="submit" value="Submit" /><%}%>
并且,在控制器中,这是我可以看到用来检查用户检查的对象的唯一方法:
public ActionResult ThisLooksWeird(FormCollection result){ var winnars = from x in result.AllKeys where result[x] != "false" select x; // yadda}
它首先是怪异的,其次,对于用户检查的那些项,FormCollection将其值列为“真假”而不是真实。
显然,我错过了一些东西。我认为这是基于这样的想法构建的,即在html表单中作用的集合中的对象是使用UpdateModel()
或通过ModelBinder 更新的。
但我没有为此设置对象; 这是否意味着这是唯一的方法?还有另一种方法吗?
茅侃侃
哈士奇WWW