这一次,我遇到了一个映射客户端knockout.js的viewModel和服务器端MVC的模型的问题。
所以重点是:
我有一个击倒的视图模型和其中的一些方法。
例如,其中一个看起来是这样的:
this.search = function () {
$.ajax({
url: "@Html.Raw(@Url.Action("Search"))",
type: 'POST',
beforeSend: function () {
},
complete: function () {
},
data: ko.toJSON(this),
cache: false,
contentType: false,
processData: false,
success: function (result) {
alert(result);
}
});
};淘汰型viewModel和MVC的模型具有相同的字段,唯一的区别是每个字段的第一个字母:淘选型字段以小写字母开头,而MVC的Model字段以大写字母开头,例如: someField - SomeField
所以在我的例子中,我尝试使用上面提到的搜索方法向服务器发送post,在此之前,我甚至检查了viewModel是否有正确的数据,并且我成功地显示了this.startDate(),但是当我将断点放在搜索操作的服务器端时,我可以看到我没有收到任何数据……这太奇怪了。
最近,我成功地实现了一个项目,其中我使用了knockout,并且我没有这个问题。
我甚至把Serializable放在服务器端模型的顶部,但没有结果。
请告诉我什么会对这个问题产生影响,我该如何解决它?谢谢。
发布于 2013-10-25 02:00:29
MVC模型绑定器区分大小写。调整其中一个模型以匹配另一个模型,或使用KO映射。
发布于 2013-10-25 13:27:17
嗯,越来越奇怪了.
我创建了测试淘汰ViewModel (我在一个页面上使用多个虚拟机):
var testViewModel = function () {
this.Name = ko.observable("");
this.testsearch = function () {
$.ajax({
url: "@Html.Raw(@Url.Action("Test"))",
type: 'POST',
beforeSend: function () {
},
complete: function () {
},
data: ko.toJSON(this),
cache: false,
contentType: false,
processData: false,
success: function (result) {
alert(result);
}
});
};
}
var testVM = new testViewModel();
ko.applyBindings(testVM, $("#testSection")[0]);这是HTML节: id="testSection“style="background-color:白色;”button type="button“btn btn-default”data-bind="click: testsearch“测试/button
[/section]这是我的服务器端模型:可序列化公共类TestDataModel {
public string Name { get; set; }
}这是我的行动:
public JsonResult Test(TestDataModel vm)
{
return Json("");
}在我的操作中,我收到了null...我现在完全醉了..。
https://stackoverflow.com/questions/19573158
复制相似问题