2011-01-28 148 views
1

我在Asp.Net MVC中的ActionResult中发布JSON数组对象时出现问题,其中收到的对象列表始终为空。将JSON对象数组发布到Asp.Net MVC中的问题2

这里是有问题的代码:

的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 

} 

提琴手的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()); 

回答

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有内置的这种支持,所以如果你可以升级,你会马上解决这个问题。

+0

@elkdanger - 请参阅上面 – 2011-01-28 10:25:08