【问题标题】:WebAPI deserializing a knockout mapping null string as "null"WebAPI 将敲除映射空字符串反序列化为“null”
【发布时间】:2014-10-15 14:27:04
【问题描述】:

我有一个 ASP.NET MVC 4 项目,它检索数据并使用 ko.mapping 将其注入到我的客户端 ViewModel 中,以便可以在 knockoutJS 中绑定:

$(document).ready(function () {
    // Get the data from the server-side
    var koModel = new MessageModel( [JSON-string] );
    // Inject server-side model into the client-side viewModel
    var viewModel = new MessageViewModel(koModel);
    // Bind knockout
    ko.applyBindings(viewModel);
});

// model loaded from the server-side
var MessageModel = function (data) {
    var self = this;
    ko.mapping.fromJS(data, {}, self);
}
// client-side data-bound viewModel
var MessageViewModel = function(koModel) {
    var self = this;
    self.data = koModel;

    // Submit form
    self.sendMessage = function () {
        $.ajax({
            url: 'http://services.mysite.net/api/Messaging',
            type: 'POST',
            data: self.data
        });
    }
}

其中一个属性是字符串。 JSON 看起来像这样:

"MyProperty": null

但是,当我 POST 到 WebAPI 2.0 服务时,Request 参数如下所示:

"MyProperty": "null"

当 WebAPI 接收到它时,它会将该字符串反序列化为“null”而不是 null。

    [HttpPut]
    async public Task<IHttpActionResult> 
        Put(int id, [FromBody]MessageModel model)
    {
        // model.MyProperty is now "null" instead of being a null value

【问题讨论】:

  • 请添加您的 javascript 以将数据发布到 webapi 服务
  • 我在使用 KnockoutJS 和表单提交的过程中添加了更详细的 JavaScript。
  • @Nexxas,嗨,你检查过答案了吗?成功了吗?

标签: asp.net-mvc serialization knockout.js asp.net-web-api knockout-mapping-plugin


【解决方案1】:

由于您使用的是 JSON,因此您应该使用 ko.mapping.fromJSON() 而不是 ko.mapping.fromJS()(请参阅 documentation 中的“使用 JSON 字符串”)。而在你的ajax调用中,你应该使用相反的转换方法:ko.mapping.toJSON():

...
data: ko.mapping.toJSON(self);
...

看到这个简单的demo。我创建了一个简单的 Web API 项目来验证这一点,就像一个魅力。

【讨论】:

  • 我漏掉了ko.mapping.toJS()!!!所以,ko.mapping.fromJS() 实际上很好。但我给你答案是因为你给了我一个很好的 JSFiddle,让我意识到我在将数据发布回服务器时遗漏了 ko.mapping.toJS()。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2023-03-04
相关资源
最近更新 更多