如何使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[]
实际上出现在表单数据中。
我哪里做错了?如何使一个动作接受数组查询参数?
我开窍了(在休息泡茶的时候)。事实上,在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