当前位置:  开发笔记 > 前端 > 正文

即使在JSON中它们为null,WebAPI也会实例化对象

如何解决《即使在JSON中它们为null,WebAPI也会实例化对象》经验,为你挑选了0个好方法。

将JSON模型发布到WebAPI控制器方法时,我注意到如果JSON模型中有空对象,模型绑定器将实例化这些项,而不是在服务器端对象中保留它们.

这与普通MVC控制器如何绑定数据形成对比...... 如果对象在JSON中为null,则不会实例化对象.

MVC控制器

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult Test(Model model)
    {
        return Json(model);
    }
}

WebAPI控制器

public class APIController : ApiController
{
    [HttpPost]
    public Model Test(Model model)
    {
        return model;
    }
}

将获得POST的模型类

public class Model
{
    public int ID { get; set; }
    public Widget MyWidget { get; set; }
}

Model类中使用的类

public class Widget
{
    public int ID { get; set; }
    public string Name { get; set; }
}

当我将JSON模型发布到每个控制器时,这是我的结果:

$.post('/Home/Test', { ID: 29, MyWidget: null })
//Results in: {"ID":29,"MyWidget":null}

$.post('/api/api/Test', { ID: 29, MyWidget: null })
//Results in: {"ID":29,"MyWidget":{"ID":0,"Name":null}}

如您所见,WebAPI方法使用对象实例化MyWidget属性,而MVC操作将其保留为null.

对我来说,WebAPI以这种方式运行似乎并不直观.它为什么要这样做?在这方面,我可以使其表现得像MVC一样吗?

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有