2016-05-12 3 views
-1

Я пытаюсь передать метод List to controller с помощью 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); 

Или вы могли бы вместо того, чтобы добавить C# привязки модели, которая имеет свойство public List<OrderHoldings> Sections { get; set; }

0

Вот как я хотел бы сделать:

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); 
     . 
     . 
     . 
    } 

и да, убедитесь, что вы принимаете ул как показано выше, а не список

+0

Вы полностью обходите привязку к модели и, следовательно, не будете иметь каких-либо преимуществ проверки модели – simonlchilds

Смежные вопросы