2016-05-12 64 views
-1

我想通過列表控制器方法使用ajax。例如我在下面的列表中有2個對象。我得到的控制器的兩個對象,但裏面性能null傳遞控制器中使用ajax調用的對象列表

var dataObject = { 'sections': sectionsOrder}; 
     console.log(dataObject); 
    CustomAjaxRequest("Post", "@Url.Action("UpdateOrderHoldingsForSections", "Renewal")" , 
     dataObject, "json", "UpdateSectionsViewWithLatestOrderHoldings", 
       null, true); 


    [HttpPost] 
    public ActionResult UpdateOrderHoldingsForSections(List<OrderHoldings> sections) 
    { 
     return null; 
    } 

即使我嘗試var dataObject = { 'sections': json.stringify(sectionsOrder)};仍然沒有工作。可能是什麼問題呢?

在控制檯前值傳遞

enter image description here enter image description here

enter image description here

+0

沒有完整的模型(在js和C#中),很難說出發生了什麼,將它添加到代碼中。 – Gusman

+0

你的CustomAjaxRequest()方法是什麼?你的ajax選項需要是'data:JSON.stringify(dataObject),'和'contentType:'application/json; charset = utf-8',' –

回答

0

你的控制器期待一個列表,但你傳遞了一個物體是列表的屬性。嘗試直接發送了陣列,它應該映射到列表

CustomAjaxRequest("Post", "@Url.Action("UpdateOrderHoldingsForSections", "Renewal")" , 
    sectionsOrder, "json", "UpdateSectionsViewWithLatestOrderHoldings", 
      null, true); 

或者你可以代替添加具有財產public List<OrderHoldings> Sections { get; set; }

0

這裏是我會怎麼做一個C#結合模型

var jsonData = JSON.stringify(sectionsOrder);    
var dataObject = { sections: jsonData };    
CustomAjaxRequest("Post", "@Url.Action("UpdateOrderHoldingsForSections", "Renewal")" , dataObject, "json", "UpdateSectionsViewWithLatestOrderHoldings", null, true); 

然後在控制器中,

[HttpPost] 
    public ActionResult UpdateOrderHoldingsForSections(string sections) 
    { 
     List<OrderHoldings> sectionsHoldings; 
     JavaScriptSerializer seriliazer = new JavaScriptSerializer(); 
     sectionsHoldings = seriliazer.Deserialize<List<OrderHoldings>>(sections); 
     . 
     . 
     . 
    } 

是的,確保你接受str在上面看到的控制器而不是列表

+0

你完全繞過模型綁定,因此不會有任何模型驗證的好處 – simonlchilds

相關問題