Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使操作后接受数组参数?_C#_Arrays_Asp.net Mvc_Forms - Fatal编程技术网

C# 如何使操作后接受数组参数?

C# 如何使操作后接受数组参数?,c#,arrays,asp.net-mvc,forms,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 <input type="checkbox" name="Foo" value="1"

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

<input type="checkbox" name="Foo[]" value="1"/> Bar
<input type="checkbox" name="Foo[]" value="2"/> Baz
<input type="checkbox" name="Foo[]" value="2"/> Bay
<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[]=1 Foo[]=2 Foo[]=3

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

那么我在这里做错了什么?如何让一个动作接受数组查询参数?

我得到了启发(在休息泡茶的时候)。在
FormCollection表单
中,参数被称为
Foo[]
而不仅仅是
Foo
这一事实导致my找到了问题的根源。过去我唯一一次做这种表单是在我从事PHP项目的时候。在PHP中命名复选框inputs
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
<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
模型作为操作的参数您是否尝试过使用
name=“Foo[0]”
name=“Foo[1]”
等?@wal我没有在输入的名称中添加id,而是删除了
[]
部分,解决了我的问题。事实证明,MVC中的数组参数处理方式与PHP中的不同,我只是尝试用PHP的方式来处理。