Возврат данных JSON для просмотра страницы в ASP.NET MVC - PullRequest
2 голосов
/ 26 июля 2010

Я работаю над проектом MVC и использую jQuery на странице просмотра для получения данных от контроллера.

public JsonResult CheckUpdate()
{
  dt = dt.AddSeconds(-100);

  IQueryable<Tweet> _tweet = ttr.CheckTime(dt);

  return Json(_tweet, JsonRequestBehavior.AllowGet);
}

Это метод в моем контроллере, который возвращает данные из класса репозитория и возвращает ихкак JSON для моей страницы просмотра, которая использует jQuery для ее получения.

Когда я запускаю программу и проверяю в Firebug, он показывает мне ошибку, которая:

Циркулярная ссылка былаобнаружен при сериализации объекта типа 'TweetTrafficReport.Models.User'

Мой вопрос

  • Правильно ли возвращать данные JSON, которые имеют тип IQueryable
  • Как я могу использовать данные JSON на странице просмотра и не получить сообщение об ошибке, как указано выше

Спасибо за помощь:)

Ответы [ 2 ]

2 голосов
/ 26 июля 2010

Циркулярная ссылка, на которую я поставил, связана с тем, что у вас есть ссылка на объект Tweet inReplyTo

IQueryable Действительно не такая большая проблема, как приведение каждого твита в JsonCapableTweet, как это делает hanselman http://nerddinnerbook.s3.amazonaws.com/Part11.htm

однако, это действительно помогает в том, как Twitter это делает

http://search.twitter.com/search.json?callback=foo&q=twitter

это очень хороший json, который они возвращают, сопоставлять ваши с их - это хорошая привычка иметь

2 голосов
/ 26 июля 2010

Вы не должны действительно возвращать IQueryable как Json, попробуйте вместо этого вернуть ViewModel

public JsonResult CheckUpdate()
{

   dt= dt.AddSeconds(-100);

   IQueryable<Tweet> _tweet = ttr.CheckTime(dt);

   var tweetVm = _tweet.Select(t => new TweetViewMode(){ Message = t.Message });

   return Json(tweetVm, JsonRequestBehavior.AllowGet);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...