Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC Return Json Result?

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?

like image 381
D-W Avatar asked May 30 '13 12:05

D-W


1 Answers

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...

like image 174
Steve Avatar answered Nov 07 '22 21:11

Steve