Asp.net mvc post的asp.net mvc控制器中没有绑定knockout.js viewmodel

Asp.net mvc post的asp.net mvc控制器中没有绑定knockout.js viewmodel,asp.net-mvc,knockout.js,knockout-3.0,Asp.net Mvc,Knockout.js,Knockout 3.0,我使用了一个简单的例子来将knockout的viewmodel发布到控制器。但事实并非如此。控制器上的dog方法正在变为null 我做错了什么 我的模型 public class Dog { public string name { get; set; } public int age { get; set; } } 我的控制器,其中Dog对象为null 看法 姓名: 年龄: var ViewModel=函数(数据){ var self=这个; fromJS(数据,{},se

我使用了一个简单的例子来将knockout的viewmodel发布到控制器。但事实并非如此。控制器上的dog方法正在变为null

我做错了什么

我的模型

public class Dog
{
    public string name { get; set; }
    public int age { get; set; }
}
我的控制器,其中Dog对象为null

看法


姓名:
年龄:
var ViewModel=函数(数据){
var self=这个;
fromJS(数据,{},self);
//self.isValid=ko.computed(函数(){
//返回self.name().length>0;
//});
self.save=函数(){
$.ajax({
url:“主页/保存”,
类型:“post”,
contentType:“应用程序/json”,
数据:ko.mapping.toJSON(self),
成功:功能(响应){
警报(响应状态);
}
});
};
};

尝试添加
[FromBody]
属性

[HttpPost]
public ActionResult Save([FromBody]Dog dog)
{
  return Json(new { Status = string.Format("Success, saved {0} with age: {1}", dog.name, dog.age) });
}
并对HTML和JavaScript执行以下操作

<div>Name:</div>
<div><input type="text" data-bind="value: name" /></div>

<div>Age:</div>
<div><input type="text" data-bind="value: age" /></div>

<div><button data-bind="click: save">Save</button></div>

<script>
  var ViewModel = function () {
    var self = this;
    self.name = ko.observable();
    self.age = ko.observable();

    self.save = function () {
      var jsonData = {'name': self.name(), 'age': self.age()};
      $.ajax({
          url: "http://localhost:8000/home/saves",
          type: "post",
          contentType: "application/json",
          data: jsonData,
          success: function (response) {
              alert(response.Status);
          }
      });
    };
  };

  ko.applyBindings(new ViewModel());
</script>
名称:
年龄:
拯救
var ViewModel=函数(){
var self=这个;
self.name=ko.observable();
self.age=ko.observable();
self.save=函数(){
var jsonData={'name':self.name(),'age':self.age()};
$.ajax({
url:“http://localhost:8000/home/saves",
类型:“post”,
contentType:“应用程序/json”,
资料来源:jsonData,
成功:功能(响应){
警报(响应状态);
}
});
};
};
应用绑定(新的ViewModel());

return-XML解析错误:未找到根元素位置:moz-nullprincipal:{5403ac24-a9c4-4147-81c4-71d71452b173}行号1,第1列:发送此运行变量数据={name:“age”,age:23};[FromBody]处理observablearrays绑定您是想从表单发布数据还是通过ajax发布?因为save函数没有绑定。通过ajax post,我认为我必须发送object,那么如何修改它来发送object呢?
[HttpPost]
public ActionResult Save([FromBody]Dog dog)
{
  return Json(new { Status = string.Format("Success, saved {0} with age: {1}", dog.name, dog.age) });
}
<div>Name:</div>
<div><input type="text" data-bind="value: name" /></div>

<div>Age:</div>
<div><input type="text" data-bind="value: age" /></div>

<div><button data-bind="click: save">Save</button></div>

<script>
  var ViewModel = function () {
    var self = this;
    self.name = ko.observable();
    self.age = ko.observable();

    self.save = function () {
      var jsonData = {'name': self.name(), 'age': self.age()};
      $.ajax({
          url: "http://localhost:8000/home/saves",
          type: "post",
          contentType: "application/json",
          data: jsonData,
          success: function (response) {
              alert(response.Status);
          }
      });
    };
  };

  ko.applyBindings(new ViewModel());
</script>