发送给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
这一定是什么愚蠢/简单的东西,我错过了。有人能看出我的逻辑错误吗?
尝试这种格式为您的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");
}
});