警告:这个问题已有九年历史了!
最好的选择是搜索较新的问题,或者搜索下面的答案以查找您的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将其值列出为“ true false”,而不仅仅是true。
显然,我缺少了一些东西。我认为这是基于以下思想构建的:使用UpdateModel()
或通过ModelBinder 更新html表单中作用于集合中的对象。
但是我没有为此设置对象。这是否意味着这是唯一的方法?还有另一种方法吗?