我通过$ .ajax POST将对象从jQuery传递给MVC3控制器。在使用Developer Tools进行调试时,我可以看到我分配给ajax数据属性的对象。该对象包含值为null的属性。当我调试Controller时,JS Debugger中为null的属性现在为“null”(字符串)。
这是为什么?我该怎么做才能防止这种情况发生?
C#Object
public class User
{
public string Name { get; set; }
}
Javascript对象
var user = {
Name: null
}
控制器方法
public JsonResult HelloWorld(User user) { .. some logic .. }
ajax Call
var data = user;
$.ajax({
url: '/Controller/HelloWorld/',
data: data,
type: 'post',
success: ...
error: ...
})
答案 0 :(得分:4)
Yeap,这是默认模型绑定器的不幸副作用。您可以通过在请求中根本不包含null属性或使用JSON请求来避免它:
$.ajax({
url: '@Url.Action("HelloWorld", "Controller")',
data: JSON.stringify({ Name: null }),
contentType: 'application/json',
type: 'post',
success: function (result) {
// ...
}
});
需要注意的事项:
contentType: 'application/json'
。JSON.stringify
,以便将请求转换为JSON字符串。