Fiddler显示数据,控制器为空

时间:2014-06-11 12:40:52

标签: knockout.js

我一直试图解决这个问题好几个星期......

这会向控制器报告有效的JSON请求,但控制器会为数据报告null。

function ViewModel() {
    self = this;
    self.CurrentColors = ko.observableArray([]);
    self.AddColors = ko.observableArray([]);
    self.AllColors = ko.observableArray([]);

    self.save = function () 
    {
        SendData = ko.toJSON(AddColors);
        alert(SendData);

        $.ajax({
            contentType: 'application/json; charset=utf-8',
            type: "POST",
            cache: false,
            url: '/EditColor/PostColors',
            data: SendData

        }).success(function (data) {

        });
    };
} 

$(document).ready(function () {
    ko.applyBindings(new ViewModel());
});

控制器数据模型:

public class AjaxColorList
{
    public string ID { get; set; }
    public string Duration { get; set; }
    public string bNotPermanent { get; set; }
}

Fiddler表明:(看起来不错)

[{"ID":"15","Duration":"Permanent","bNotPermanent":"1"},{"ID":"21","Duration":"Permanent","bNotPermanent":"1"}]

以下发布完全相同的数据,但我的控制器会看到数据。我还不是javascript的专家(现在只是学习),所以我还没有完全理解发生了什么。在第二次迭代工作之后;我无法获得该文件。已经被认可以及其他各种问题。

$(function () {
    var baseModel = {
        // data
        addColors: ko.observableArray([{"ID":"15","Duration":"Permanent","bNotPermanent":"1"},{"ID":"21","Duration":"Permanent","bNotPermanent":"1"}]),
        postColors: function () {
            console.log(baseModel.addColors());
            $.ajax({
                url: '/EditColor/PostColors',
                contentType: "application/json",
                async: true,
                type: "POST",
                data: JSON.stringify(baseModel.addColors()),
                error: function (jqXHR, textStatus, errorThrown) {
                    console.log("FAIL: " + errorThrown);
                },
                success: function (data, textStatus, jqXHR) {
                    console.log("SUCCES");
                }
            });
        }
    };

    ko.applyBindings(baseModel);
});

fiddler数据与上面的内容相同。

有人可以解释为什么顶级代码不起作用吗?

1 个答案:

答案 0 :(得分:0)

上面的代码已得到纠正。这是一个“contentType”正确的问题。谢谢!