Asp.net mvc post的asp.net mvc控制器中没有绑定knockout.js viewmodel
我使用了一个简单的例子来将knockout的viewmodel发布到控制器。但事实并非如此。控制器上的dog方法正在变为null 我做错了什么 我的模型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
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>