web-dev-qa-db-fra.com

ASP.NET MVC renvoyer le résultat Json?

J'essaie de renvoyer un résultat JSON (tableau);

Si je le fais manuellement cela fonctionne

    resources:[
{
    name: 'Resource 1',
    id: 1,
    color:'red'
},{
    name: 'Resource 2',
    id: 2
}],

mais j'ai du mal à rendre en le passant:

Sur la vue:

 resources:@Model.Resources

Qui sur le contrôleur

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

sur le modèle

public JsonResult Resources { get; set; }

Mais en regardant ce qui est rendu en HTML:

resources:System.Web.Mvc.JsonResult

Des idées où je vais mal?

34
D-W

CA devrait etre :

public async Task<ActionResult> GetSomeJsonData()
{
    var model = // ... get data or build model etc.

    return Json(new { Data = model }, JsonRequestBehavior.AllowGet); 
}

ou plus simplement:

return Json(model, JsonRequestBehavior.AllowGet); 

J'ai remarqué que vous appelez GetResources () à partir d'un autre ActionResult qui ne fonctionnera pas. Si vous souhaitez récupérer JSON, appelez directement GetResources () depuis ajax ...

77
Steve