2011-01-28 149 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