Reputation: 5341
I'm trying to return a JSON result (array);
If I do it manually it works
resources:[
{
name: 'Resource 1',
id: 1,
color:'red'
},{
name: 'Resource 2',
id: 2
}],
but I'm having issues rendering by passing it in:
On the view:
resources:@Model.Resources
Which on the controller
public ActionResult Index()
{
...
var model = new Display();
model.Resources = GetResources();
}
public JsonResult GetResources()
{
var model = new Models.ScheduledResource()
{
id = "1",
name = "Resource"
};
return new JsonResult() { Data = model, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
on the model
public JsonResult Resources { get; set; }
But looking at whats rendered in HTML:
resources:System.Web.Mvc.JsonResult
Any ideas where I'm going wrong?
Upvotes: 40
Views: 150844
Reputation: 2997
It should be :
public async Task<ActionResult> GetSomeJsonData()
{
var model = // ... get data or build model etc.
return Json(new { Data = model }, JsonRequestBehavior.AllowGet);
}
or more simply:
return Json(model, JsonRequestBehavior.AllowGet);
I did notice that you are calling GetResources() from another ActionResult which wont work. If you are looking to get JSON back, you should be calling GetResources() from ajax directly...
Upvotes: 84