Я использую ASP.MVC 1, чтобы возвратить IEnumerable объектов (скажем, Cars):
public class Car : Entity<Car>
{
public virtual string Make { get; set; }
public virtual double Length { get; set; }
public virtual string Colour { get; set; }
}
как это:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult GetRoutes()
{
IEnumerable<Car> cars = _carTask.GetCars();
return Json(cars);
}
На моей странице я хочу перебрать каждую возвращенную машину, поэтому у меня есть это:
$.post("/Home/GetCars", null,
function(cars)
{
alert("type of object returned is " + typeof cars + ", content is " + cars);
$.each(routes, function()
{
alert(this);
});
}
);
Когда я запускаю это, первое окно оповещения говорит:
тип объекта - строка, содержимое - [{"Make": "BMW"}, {"Make": "Ford"}]
Что говорит мне, что я получаю строку назад (не должен ли я вернуть объект?), Содержащую структуру Json с 2 объектами. Однако функция jquery $ .each затем выполняет итерацию по каждому символу в строке, поэтому я получаю 46 блоков предупреждений: первый говорит «[», затем «{», затем «», затем «M», затем «a ', тогда' k '... вы поняли.
Из того, что я прочитал, jQuery должен анализировать это как коллекцию и должен повторять только два раза, чтобы показать мне предупреждения, по одному для каждой машины. Затем я мог бы сделать предупреждение (car.Make), чтобы отобразить марки, но если я попытаюсь это сделать, я получу неопределенное значение (потому что строка не имеет свойства Make).
Что я делаю не так? Спасибо за любую помощь, должна быть очевидная ошибка, но я обещаю, что сначала я сделал много поисков и ничего не нашел! :)