如何使post动作接受数组参数?

时间:2014-08-13 11:14:06

标签: c# arrays asp.net-mvc forms

我有一个表单,其中有一堆动态生成的复选框。像这样:

<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[]实际出现在表单数据中。

所以我在这里做错了吗?如何使操作接受数组查询参数?

1 个答案:

答案 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