【发布时间】:2014-10-18 22:27:37
【问题描述】:
下面是我的 AJAX GET 请求,它试图将几个参数(包括 javascript 对象)传递给 mvc 控制器,但该对象总是作为 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) {
}
});
控制器方法如下所示:
[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
【问题讨论】:
-
我认为您传入的字符串恰好包含 JSON,而不是
Sort对象。sortParam: sort怎么样 -
@MikeChristensen 是的,我在执行 JSON.stringify 之前尝试过这个,但属性作为 null 传递。
-
您可以运行 Fiddler 并粘贴正在发送的确切 HTTP 请求吗?这可能会帮助人们发现问题。
-
@MikeChristensen GET /Account/GetUsers?skipRecords=0&sortParam%5Bcolumn%5D=UserName&sortParam%5Border%5D=desc&_=1408990051727 HTTP/1.1
标签: javascript ajax asp.net-mvc json controller