2010-07-26 4 views
2

Я работаю над проектом MVC, и я использую страницу jQuery в просмотре, чтобы получить данные от контроллера.Возвращение данных JSON для просмотра страницы в ASP.NET MVC

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

Круговая ссылка Бьется потому, что о том, что у вас есть ссылка на ваш объект TweetRedlyTo

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

однако это поможет lolok на пути Twitter делает это

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

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

+0

Как вы думаете, проблема с круговой ссылкой возникает из-за того, что конфликт в моей базе данных, потому что я пытаюсь изменить их NerdDinner ur, и это все еще проблема с круговой ссылкой. – icepon

+0

. Как выглядит ваш код, чтобы изменить его на jsonTweet? – MarkKGreenway

+0

В моем БД есть моя ложь Спасибо за помощь ур – icepon

2

Вы не должны действительно вернуться 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); 
} 
Смежные вопросы