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

本文关键字:数组 参数 何使 post | 更新日期: 2023-09-27 18:18:00

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

<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属性,我希望它填充来自这些复选框的数据,但它的值始终为空(无论我是否检查任何复选框)。由于这失败了,我只是将int[] Foo作为一个普通的旧参数添加到动作中,只是为了使它不是由模型引起的,但Foo仍然为空。

我检查了浏览器对我的帖子的评论,但是复选框中的值在那里(如果我勾选它们的话)。

Foo[] = 1Foo[] = 2Foo[] = 3

作为最后的手段,我将FormCollection form添加到动作参数中,我可以看到Foo[]实际上出现在表单数据中。

我哪里做错了?如何使一个动作接受数组查询参数?

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

我开窍了(在休息泡茶的时候)。事实上,在FormCollection form中,参数被称为Foo[]而不仅仅是Foo,这使我找到了问题的根源。我过去唯一一次使用这种表单是在开发PHP项目的时候。在PHP中,将复选框输入命名为Foo[]是正确的方法(我认为)。事实证明,如果我想在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