将viewmodel发送到控制器

时间:2013-06-14 18:05:49

标签: knockout.js knockout-2.0 knockout-mvc

我想在mvc4中将viewmodel发送到我的控制器。我尝试的所有内容都会返回,因为viewmodel未定义。其他一切都很好。页面生成并显示它应该的所有值,但我似乎无法将vm更改为json并通过post发送

查看模型

var guideviewmodel = function () {
var self = this;
self.scencustlist = ko.observableArray([]);
...}

ko.applyBindings(new guideviewmodel);

我在viewmodel和外部都试过了。

        $("#export").on("click", function (model, event) {
            var json = ko.toJSON(guideviewmodel);
            alert(json);
            $.ajax({
                type: 'POST',
                url: callPath + "/api/excel",
                cache: false,
                contentType: 'application/json; charset=utf-8',
                //data: JSON.stringify(self.scenppeditlist()),
                data: ko.toJSON(this.data),
                success: function () {
                    // success message 
                }
            });
        });

        self.exporttoexcel = function () {
            var json = ko.toJSON(guideviewmodel);
            alert(json);
            $.ajax({
                type: 'POST',
                url: callPath + "/api/excel",
                cache: false,
                contentType: 'application/json; charset=utf-8',
                //data: JSON.stringify(self.scenppeditlist()),
                //data: ko.toJSON(json),
                data: self,
                success: function () {
                    // success message 
                }
            });
        }

1 个答案:

答案 0 :(得分:0)

如果您尝试这样做可能会有效:

var vm = new guideviewmodel();
ko.applyBindings(vm);

$("#export").on("click", function (model, event) {
        var json = ko.toJSON(vm);
        alert(json);
        $.ajax({
            type: 'POST',
            url: callPath + "/api/excel",
            cache: false,
            contentType: 'application/json; charset=utf-8',
            //data: JSON.stringify(self.scenppeditlist()),
            data: ko.toJSON(this.data),
            success: function () {
                // success message 
            }
        });
    });