首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >knockout的ViewModel与MVC模型的映射问题

knockout的ViewModel与MVC模型的映射问题
EN

Stack Overflow用户
提问于 2013-10-25 01:58:35
回答 2查看 401关注 0票数 0

这一次,我遇到了一个映射客户端knockout.js的viewModel和服务器端MVC的模型的问题。

所以重点是:

我有一个击倒的视图模型和其中的一些方法。

例如,其中一个看起来是这样的:

代码语言:javascript
运行
复制
                    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放在服务器端模型的顶部,但没有结果。

请告诉我什么会对这个问题产生影响,我该如何解决它?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-10-25 02:00:29

MVC模型绑定器区分大小写。调整其中一个模型以匹配另一个模型,或使用KO映射。

票数 0
EN

Stack Overflow用户

发布于 2013-10-25 13:27:17

嗯,越来越奇怪了.

我创建了测试淘汰ViewModel (我在一个页面上使用多个虚拟机):

代码语言:javascript
运行
复制
            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

代码语言:javascript
运行
复制
   [/section]

这是我的服务器端模型:可序列化公共类TestDataModel {

代码语言:javascript
运行
复制
    public string Name { get; set; }
}

这是我的行动:

代码语言:javascript
运行
复制
    public JsonResult Test(TestDataModel vm)
    {
        return Json("");
    }

在我的操作中,我收到了null...我现在完全醉了..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19573158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档