gpt4 book ai didi

在 mvc Controller 中接收为 null 的 Javascript 对象

转载 作者:行者123 更新时间:2023-11-29 19:35:10 25 4
gpt4 key购买 nike

下面是我的 AJAX GET 请求,它试图将包括 javascript 对象在内的几个参数传递给 mvc Controller ,但该对象始终被接收为 null:

 var sort =  { column: 'UserName', order: 'desc' };
var sortParameter = JSON.stringify(sort);

$.ajax({
url: '@Url.Action("GetUsers", "Account")',
cache: false,
type: 'GET',
contentType: 'application/json; charset=utf-8',
data: { skipRecords: vm.pageIndex * 1000, sortParam: sortParameter },
success: function (data) {
}
});

Controller 方法如下所示:

[HttpGet]
public JsonResult GetUsers(int skipRecords, Sort sortParam, string userName = null)
{

}

下面还定义了 Sort 类:

public class Sort
{
public string column { get; set; }
public string order { get; set; }
}

如果我不使用 JSON.stringify 并只传递 javascript 对象,下面是发送的请求:

GET /Account/GetUsers?skipRecords=0&sortParam%5Bcolumn%5D=UserName&sortParam%5Border%5D=desc&_=1408990051727 HTTP/1.1

最佳答案

您可能正在寻找:

 var sortParameter =  { column: 'UserName', order: 'desc' };

$.ajax({
url: '@Url.Action("GetUsers", "Account")',
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
skipRecords: vm.pageIndex * 1000,
sortParam: sortParameter }),
success: function (data) {
}
});

您的代码不起作用的原因是,如果您不对整个结果进行 JSON.stringify,它将作为编码的查询字符串传递。您不能将 JSON 作为查询字符串编码值中的值传递。

查询字符串编码(Post 或 Get)看起来像:a=1&b=2&c=3

所以你的查询字符串看起来像 skipRecords=5&sortParam={column:'UserName',order:'desc' }

MVC 不会双重解码查询字符串和 json。

关于在 mvc Controller 中接收为 null 的 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25491539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com