如何在C#中将ajax调用中的int数组作为参数从JS发送到控制器操作

How to send int array from ajax call from JS to controller action as a parameter in C#

本文关键字:JS 参数 操作 控制器 数组 中将 ajax 调用 int      更新时间:2023-09-26

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

我需要将它作为参数传递给我的控制器操作。但该值没有被分配给参数,它是null。

这是代码:

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)
{...}

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

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

我赞同@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/.