【发布时间】:2013-05-14 15:43:59
【问题描述】:
我有一个像这样构建的 ajax 帖子:
var myData = [
{
id: "a",
name: "Name 1"
},
{
id: "b",
name: "Name 2"
}
];
$.ajax({
type: 'POST',
url: '/myurl/myAction',
data: { items: myData },
dataType: 'json',
error: function (err) {
alert("error - " + err);
}
});
还有一个 MVC 控制器:
[HttpPost]
public JsonResult MyAction(MyClass[] items)
{
}
MyClass 只是数据的简单表示:
public class MyClass {
public string Name {get; set; }
public string Id {get; set; }
}
当 javascript 发出 post 请求时,控制器操作确实收到了 2 个项目,但是这些项目中的属性(id、name)为空。
在 fiddler 中检查请求,body 是这样的:
Name | Value
items[0][Name] | Name 1
items[0][Id] | a
items[1][Name] | Name 2
items[1][Id] | b
我错过了什么吗?
【问题讨论】:
-
只是猜测,可能是因为属性在javascript中是小写的,而在C#中是大写的。
-
不,不是这样。 JSON 序列化程序不区分大小写。
-
另一个属性为空的场景 - stackoverflow.com/questions/18124405/…
标签: c# javascript ajax asp.net-mvc