2013-05-30 5 views
27

Im пытается вернуть результат json (массив); Если я делаю это вручную, работаетASP.NET MVC Return Json Result?

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

но проблемы им с рендеринга, передав его в:

На взгляд:

resources:@Model.Resources 

Который на контроллере

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

по модели

public JsonResult Resources { get; set; } 

Но, глядя на Что оказывается в HTML:

resources:System.Web.Mvc.JsonResult 

Любые идеи, где им будет не так?

+0

Возможный дубликат [JSONResult to String] (http://stackoverflow.com/questions/4571985/jsonresult-to- строка) – James

+0

Должно быть: return Json (new {Data = model}, JsonRequestBehavior = JsonRequestBehavior.AllowGet); – Steve

ответ

64

Оно должно быть:

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

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

или более просто:

return Json(model, JsonRequestBehavior.AllowGet); 

Я заметил, что вы звоните GetResources() из другого ActionResult, который не будет работать. Если вы хотите вернуть JSON, вы должны напрямую вызвать GetResources() из ajax ...