Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 处理发布到Web API控制器的同名多个参数_C#_Jquery_Asp.net Web Api_Serialization - Fatal编程技术网

C# 处理发布到Web API控制器的同名多个参数

C# 处理发布到Web API控制器的同名多个参数,c#,jquery,asp.net-web-api,serialization,C#,Jquery,Asp.net Web Api,Serialization,我有一个包含元素的HTML表单。i、 e.用户可以从列表中选择多个选项。我使用jQuery序列化表单数据并将其发布到Web API控制器ASP.NET MVC 问题是,序列化会导致查询字符串包含多个同名参数。以下是jQuery: $('#submit').click(function () { var filters = $('#form').serialize(); $.getJSON("/Api/GetData?" + filters, function (data) {

我有一个包含元素的HTML表单。i、 e.用户可以从列表中选择多个选项。我使用jQuery序列化表单数据并将其发布到Web API控制器ASP.NET MVC

问题是,序列化会导致查询字符串包含多个同名参数。以下是jQuery:

$('#submit').click(function () {

    var filters = $('#form').serialize();

    $.getJSON("/Api/GetData?" + filters, function (data) {
        // Do something with data
    });

});
生成的API调用类似于:

/Api/GetData?selection=1234&selection=7432&selection=23
API控制器似乎只接受“selection”参数的第一个值。它是这样做的:

public void GetData(string selection){
    …
}
我想知道,有没有一种方法可以让API控制器将参数视为一个集合,或者应该在客户端处理,即通过确保参数值以逗号分隔的列表/API/GetData发送?selection=12347432,23。如果是后者,是否有一种简洁的方法来实现这一点,而不是手动构建querystring


非常感谢。

感谢我对更改控制器参数的评论:

public void GetData([FromUri] string[] selection){

它似乎需要[FromUri]装饰程序

string selection->string[]selection您可以使用数组并将所有必需的值推送到数组中,然后在jquery中使用POST调用。您的url应该是这样的:@Reniuz这是用于PHP的。对于MVC,它不是这样工作的/WebAPI@RoryMcCrossan是的…我在想坏的url,并试图指向格式…胡说…今天是星期五,你知道:啊,是的,我错过了你发出的GET请求。很高兴你让它工作了。