如何将来自JS的ajax调用中的int数组作为C#中的参数发送到controller action

时间:2015-06-26 13:54:13

标签: javascript c# ajax

我有一个对象selectedDocTypes为[23,45,78]

我需要将它作为参数传递给我的控制器动作。 但是该值未被赋值给参数,它为空。

这是代码:

JS:

function addNewIssue(accountSID,selectedDocTypes, callback) {
var Data = { accountSID: accountSID, selectedDocTypes: selectedDocTypes };
$.ajax(landforceAPIURL + '/AddNewIssue', {
        cache: false,
        data: Data,
        success: function (data) {
             if (callback)
                    callback(data)
                },
        error: dataContext.queryFailed
        });
};

C#:

[HttpGet, Route("AddNewIssue")]
public string AddNewIssue(string accountSID,int[] selectedDocTypes)
{...}

2 个答案:

答案 0 :(得分:0)

假设您已在JavaScript中正确定义selectedDocTypes作为数组,您必须在ajax调用中指定contentType发送到服务器,例如:

$.ajax(landforceAPIURL + '/AddNewIssue', {
        cache: false,
        data: Data,
        contentType: "application/json; charset=utf-8", //content type send to sever

答案 1 :(得分:0)

我是@haz评论的第二个。

但是对于这个问题,这个答案似乎涵盖了它:https://stackoverflow.com/a/13255459/4349196

另一种可能的解决方案是使用自定义JavaScript构建如下的URL:

...accountSID=jSmith&selectedDocTypes=23&selectedDocTypes=45&selectedDocTypes=78

请参阅此处查看相关示例:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/