发送给c#控制器的Knockout AJAX数据为空

本文关键字:AJAX 数据 Knockout 控制器 | 更新日期: 2023-09-27 18:07:56

我试图张贴颜色(id号)的列表在我的控制器测试函数。我知道数据正在被发送,看起来它的格式是正确的。

当我发送数据时,fiddler显示如下:

[{"ID":"15","Duration":"Permanent","bNotPermanent":"1"},   
{"ID":"21","Duration":"Permanent","bNotPermanent":"1"}]
Knockout AJAX post:
        SendData = ko.toJSON(self.AddColors) ;
        alert(SendData);
        $.ajax({
            ContentType: 'application/json; charset=utf-8',
            dataType: "json",
            type: "POST",
            url: '/EditColor/PostColors',
            data: SendData
        }).success(function (data) {
        });

我使用的数据类:

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

控制器功能:(我也尝试了公共JsonResult PostColors(String AddColors只是为了看看是否有什么会通过)

    public JsonResult PostColors(List<Helpers.AjaxColorList> AddColors)
    {
        var ColorList = AddColors;  // breakpoint set here
        ....
    }

在上述函数的断点处,我看到AddColors为空。我确保JSON查询中的字段与数据类中的字段匹配。我错过了什么?

我还更改了代码,使它只传递一个对象到控制器,以验证它可以接收一些东西…任何东西。

添加的控制器功能如下所示:

    public JsonResult RequestAddColor(Helpers.AjaxColor AddColor)
    {
        var color = AddColor; // breakpoint here

         ...
    }

Fiddler显示了这个:

{"ID":"11","Duration":"Permanent","bNotPermanent":"false"}

但是控制器显示所有变量为null

这一定是什么愚蠢/简单的东西,我错过了。有人能看出我的逻辑错误吗?

发送给c#控制器的Knockout AJAX数据为空

尝试这种格式为您的ajax调用,我重新创建的场景,这是为我工作:

          $.ajax({
                url: '/Home/PostColors',
                contentType: "application/json",
                async: true,
                type: "POST",
                data: JSON.stringify(sendData),
                error: function (jqXHR, textStatus, errorThrown) {
                    console.log("FAIL: " + errorThrown);
                },
                success: function (data, textStatus, jqXHR) {
                    console.log("SUCCES");
                }
            });