我有一个表单,其中有一堆动态生成的复选框。像这样:
<input type="checkbox" name="Foo[]" value="1"/> Bar
<input type="checkbox" name="Foo[]" value="2"/> Baz
<input type="checkbox" name="Foo[]" value="2"/> Bay
我的模型中有一个int[] Foo
属性,我希望它填充这些复选框中的数据,但它的值始终为null(无论我是否选中任何复选框)。由于这次失败,我只是将int[] Foo
作为一个普通的旧参数添加到操作中,因为它不是由模型引起的,但Foo
仍为空。
我检查了浏览器对我的帖子的评价,但是复选框中的值是那里(如果我当然检查它们)。
Foo [] = 1 Foo [] = 2 Foo [] = 3
作为最后的手段,我在动作参数中添加了FormCollection form
,我可以看到Foo[]
实际出现在表单数据中。
所以我在这里做错了吗?如何使操作接受数组查询参数?
答案 0 :(得分:0)
我得到了开悟(休息时喝茶)。在FormCollection form
参数中调用Foo[]
而不仅仅是Foo
的事实导致了问题的根源。我过去唯一一次做过这种形式的时候就是我从事PHP项目的时候。命名复选框输入Foo[]
是在PHP中执行此操作的正确方法(我认为)。事实证明,如果我想在MVC中做同样的事情,我必须省略[]
并且它会起作用。
简而言之,对于我的MVC应用,我的输入应该是这样的:
<input type="checkbox" name="Foo" value="1"/> Bar
<input type="checkbox" name="Foo" value="2"/> Baz
<input type="checkbox" name="Foo" value="2"/> Bay