简体   繁体   中英

Returning JSON data to view page in ASP.NET MVC

I'm working on MVC project and i using jQuery in view page to get data from controller.

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

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

  return Json(_tweet, JsonRequestBehavior.AllowGet);
}

This is a method in my controller which gets data back from the repository class and returns it as JSON to my view page, which uses jQuery to get it.

When i run program and inspect in Firebug, it shows me an error which is:

A circular reference was detected while serializing an object of type 'TweetTrafficReport.Models.User'

My question is

  • Is it correct that i return JSON data which it is IQueryable type
  • How can i use JSON data in my view page and not get an error like above

Thanks for ur help :)

You shouldn't really return IQueryable as Json, try returning a ViewModel instead

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

The circular reference i bet is because of the fact you have your Tweet object reference inReplyTo

IQueryable Really isnt as big an issue as casting each Tweet as a JsonCapableTweet like hanselman does http://nerddinnerbook.s3.amazonaws.com/Part11.htm

however it does help to lolok at the way Twitter does this

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

thats pretty nice json they return, matching yours to theirs is a good habit to have

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM