小编典典

使用AJAX将JavaScript数组发布到asp.net MVC控制器

ajax

我的控制器:

[HttpPost]
public ActionResult AddUsers(int projectId, int[] useraccountIds)
{
    ...
}

我想通过AJAX将参数发布到控制器。传递int projectId并不是问题,但是我无法发布int[]

我的JavaScript代码:

function sendForm(projectId, target) {
    $.ajax({
        traditional: true,
        url: target,
        type: "POST",
        data: { projectId: projectId, useraccountIds: new Array(1, 2, 3) },
        success: ajaxOnSuccess,
        error: function (jqXHR, exception) {
            alert('Error message.');
        }
    });
}

我尝试了一个测试阵列,但没有成功。:(我也尝试设置traditional: truecontentType: 'application/json; charset=utf-8'但也没有成功…

int[] useraccountIds贴到我的控制器总是空。


阅读 245

收藏
2020-07-26

共1个答案

小编典典

您可以定义一个视图模型:

public class AddUserViewModel
{
    public int ProjectId { get; set; }
    public int[] userAccountIds { get; set; }
}

然后调整您的控制器动作以将此视图模型作为参数:

[HttpPost]
public ActionResult AddUsers(AddUserViewModel model)
{
    ...
}

最后调用它:

function sendForm(projectId, target) {
    $.ajax({
        url: target,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({ 
            projectId: projectId, 
            userAccountIds: [1, 2, 3] 
        }),
        success: ajaxOnSuccess,
        error: function (jqXHR, exception) {
            alert('Error message.');
        }
    });
}
2020-07-26