加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC将null反序列化为“null”(字符串)

发布时间:2020-12-16 06:22:12 所属栏目:asp.Net 来源:网络整理
导读:我通过$.ajax POST将一个对象从jQuery传递给MVC3控制器.在使用Developer Tools进行调试时,我可以看到我分配给ajax数据属性的对象.该对象包含值为null的属性.当我调试Controller时,JS Debugger中为null的属性现在为“null”(字符串). 为什么是这样?我该怎么
我通过$.ajax POST将一个对象从jQuery传递给MVC3控制器.在使用Developer Tools进行调试时,我可以看到我分配给ajax数据属性的对象.该对象包含值为null的属性.当我调试Controller时,JS Debugger中为null的属性现在为“null”(字符串).

为什么是这样?我该怎么做才能防止这种情况发生?

C#对象

public class User
{
   public string Name { get; set; }
}

Javascript对象

var user = {
Name: null
}

控制器方法

public JsonResult HelloWorld(User user) { .. some logic .. }

ajax电话

var data = user;
$.ajax({
url: '/Controller/HelloWorld/',data: data,type: 'post',success: ...
error: ...
})

解决方法

是的,这是默认模型绑定器的一个不幸的副作用.您可以通过在请求中根本不包含null属性或使用JSON请求来避免它:

$.ajax({
    url: '@Url.Action("HelloWorld","Controller")',data: JSON.stringify({ Name: null }),contentType: 'application/json',success: function (result) {
        // ...
    }
});

需要注意的事项:

> contentType:’application / json’.> JSON.stringify围绕data参数,以便将请求转换为JSON字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读