0

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

所以重点是:

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

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

                    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 的 Model 字段相同,唯一的区别是每个字段的第一个字母:淘汰赛的字段以小写字母开头,而 MVC 的 Model 字段以大写字母开头,例如: someField - SomeField

因此,就我而言,我正在尝试使用上述搜索方法向服务器发布帖子。在执行此操作之前,我什至检查了 viewModel 是否有正确的数据,并且我成功显示了 this.startDate() 但是当我将断点放在我的搜索操作的服务器端时,我可以看到我没有收到任何数据......还有更多比奇怪。

最近我成功实施了一个使用敲除的项目,我没有这个问题。

我什至将 [Serializable] 放在服务器端模型的顶部,但没有结果。

请建议什么可能对此产生影响,我该如何解决?谢谢。

4

2 回答 2

0

嗯,越来越奇怪了……

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

            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 部分: [section id="testSection" style="background-color: white;"] [input data-bind="value: Name" /] [button type="button" class="btn btn-默认" data-bind="click: testsearch"]测试[/button]

   [/section]

这是我的服务器端模型:[Serializable] public class TestDataModel {

    public string Name { get; set; }
}

这是我的行动:

    public JsonResult Test(TestDataModel vm)
    {
        return Json("");
    }

在我的行动中,我收到 null ......我现在完全陷入困境......

于 2013-10-25T05:27:17.467 回答
0

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

于 2013-10-24T18:00:29.057 回答