2014-01-12 4 views
1

Я пытаюсь создать список с AJAX и отправить его на контроллер. Вот мой код до сих пор;Как получить список объектов с AJAX в ASP.NET MVC

var objects = new Array(); 

here is a loop { 
var object = { 
      a: 1, 
      b: 2, 
      c: 3 
     }; 

objects[i] = object; 
i++; 
} 

$.ajax({ 
     type: "POST", 
     url: "/Controller/Poster", 
     cache: false, 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(objects), 
     success: function (result) { 
      alert("posted"); 
     } 
    }); 

Я следую за правильным образом до здесь?

И в конце я создал класс модели;

public class ObjectModel 
{ 
    public int a {get; set;} 
    public int b {get; set;} 
    public int c {get; set;} 
} 

Теперь я пытаюсь получить этот список объектов для своего контроллера. После исследования я попытался создать метод контроллера, который принимает список объектов в качестве параметра;

[HttpPost] 
public JsonResult Poster(List<ObJectModel> olist) 
    { 
    } 

Но я не могу определить список в своем контроллере. Что я должен делать сейчас? И должен ли я внести какие-либо изменения в свой код?

Спасибо!

+0

Вы пытались опубликовать пост без JSON.stringify только объектов? –

+0

и добавить атрибут [HttpPost] к плакату –

+0

по умолчанию модель вяжущего не может обрабатывать список , вы можете создать модельное связующее для вашего типа – chenZ

ответ

2

Я добавил System.Collections namepace в мой контроллер. И теперь я могу определить List. После того, как я добавил атрибут [HttpPost] к моему методу и опубликовал свойства моего класса, в настоящее время нет никаких проблем. Моя основная проблема - пространство имен System.Collections. Я успешно передал свой список объектов моему контроллеру.

+1

В дальнейшем добавьте ошибки компиляции в вопрос. Давно можно найти проблему без всякой информации. Также попробуйте это http://www.jetbrains.com/resharper/ очень полезно и предложите решение для этого и многих других вопросов. –

+0

Я не могу отметить ваш ответ как решение, потому что вопрос не мой, но я делаю upvote, потому что вы находите решение своей проблемы, но затем добавляете более полезную информацию. –

+0

Да, вы rihgt.Я буду предоставлять дополнительную информацию в моих будущих вопросах. Благодарим вас за ваш совет о resharper. Я попробую. – gkon

0

Попробуйте

data: objects 

вместо

data: JSON.stringify(objects) 

атрибут Добавить в Poster

[HttpPost] 
public JsonResult Poster(List<ObJectModel> olist) 

Изменить ObjectModel

public class ObjectModel 
{ 
    public int a {get; set;} 
    public int b {get; set;} 
    public int c {get; set;} 
} 
+0

Я уже добавил HttpPost attr. к моему методу. Поэтому я все еще не могу определить список в качестве параметра. Я думаю, что моя главная проблема в этом. Я могу определить IList, Arraylist и т. Д., Но не могу List. – gkon

+0

Вы изменили собственность в общественном порядке? –

+0

Да, я изменил его. – gkon

0

попробовать

data: $.param(objects), 

InstEd из

data: JSON.stringify(objects), 
+0

Какая разница, зачем вы копировали два раза одну и ту же строку из моего ответа? –

+0

Извините, просто скопируйте ошибку папок, просмотрите обновленный ответ. –

+0

ОК, я вижу, вы отредактировали –

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