我在向Asp.Net MVC中的ActionResult发布JSON对象数组时遇到问题,其中收到的对象列表始终为空。
以下是有问题的代码:
使用Javascript:
var lineItems = new Object();
lineItems.Entrys = new Array()
var i = 0;
var currentId = 0;
$('#pages-table td.PageId').each(function () {
currentId = $(this).html().toString().trim();
lineItems.Entrys[i] = new Object({ ID: currentId, POS: i });
i++;
});
$.ajax({
url: 'UpdatePageOrder',
data: JSON.stringify(lineItems),
contentType: 'application/json',
dataType: 'json',
traditional: true,
type: 'POST',
success: function (result) {
}
});
Asp.Net MVC
public class PageOrder
{
public string ID { get; set; }
public string POS { get; set; }
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdatePageOrder(List<PageOrder> list)
{
var newPageOrderList = list;
... list is always null
}
Fiddler TextView:
{"Entrys":[{"ID":"0","POS":"7"},{"ID":"1","POS":"3"}]}
编辑 *
Downloaded MVC2 Futures and added to OnApplicationStarted (I'm using ninject)
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
答案 0 :(得分:2)
我不相信MVC 2对JSON有自动绑定支持,可以解释你的问题。
Phil Haack在以下链接中讨论了一个解决方案,它将引导您构建一个JsonValueProvider来解决这个特定问题。
http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx
编辑:抱歉,他没有带您完成实际的实施,而是讨论它并提供指向包含提供商的示例的链接。 MVC 3内置了这种支持,所以如果你可以升级,你会马上解决这个问题。