2015-09-04 71 views
0

我正在使用Kendo UI MVC網格。控制器正在返回數據,但沒有顯示在網格中。我究竟做錯了什麼?Kendo UI Grid返回json而不是顯示數據

的控制器

[OutputCache(Duration = 1, VaryByParam = "*")] 
    public ActionResult GetIdeasForApproval([DataSourceRequest] DataSourceRequest request) 
    { 
     IdeaResponse response = this.DashBoardService.GetIdeasForApproval(); 

     IEnumerable<Idea> ideas = response.Ideas; 

     Idea viewModel = new Idea(); 
     JsonResult result = new JsonResult(); 

     result.Data = 
      Json(
       response.Ideas.Select(
        p => 
         new 
         { 
          IdeaId = p.IdeaId, 
          Title = p.Title, 
          Description = p.Description, 
          //Photo = Convert.ToBase64String(p.TeamMember.Photo), 
          URL = p.Url ?? string.Empty 
         })); 
     result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 

     return result; 
    } 


@(Html.Kendo().Grid<Idea>() 
.Name("ideas-for-approval") 
.Columns(columns => 
    { 
     columns.Bound(p => p.IdeaId).Visible(false); 
     columns.Bound(p => p.Title).Title("Title"); 
     columns.Bound(p => p.Description).Title("Description"); 
     columns.Bound(p => p.Url).Title("URL"); 
    } 
) 
.DataSource(dataSource => dataSource 
     .Ajax() 
     .Events(events => events.Error("onError")) 
     .Read(read => read.Action("GetIdeasForApproval", "Dashboard")) 
    ) 

返回的JSON

{"ContentEncoding":null,"ContentType":null,"Data":[{"IdeaId":431,"Title":"Test","Description":"test","URL":""},{"IdeaId":406,"Title":"Windows 10 For All Developers Test","Description":"Upgrade Windows 7 to Windows 10 for all developers. Test","URL":"https://www.microsoft.com/en-us/windows/features"},{"IdeaId":433,"Title":"Test Title","Description":"Test Description","URL":""}],"JsonRequestBehavior":1,"MaxJsonLength":null,"RecursionLimit":null} 

回答

1

把你的代碼和調整它稍稍:

JsonResult result = new JsonResult(); 

     result.Data = 
      Json(
       response.Ideas.Select(
        p => 
         new 
         { 
          IdeaId = p.IdeaId, 
          Title = p.Title, 
          Description = p.Description, 
          //Photo = Convert.ToBase64String(p.TeamMember.Photo), 
          URL = p.Url ?? string.Empty 
         })); 
     result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 

     return result; 

到:

var model = response.Ideas.Select(p => new { 
                IdeaId = p.IdeaId, 
                Title = p.Title, 
                Description = p.Description, 
                //Photo = Convert.ToBase64String(p.TeamMember.Photo), 
                URL = p.Url ?? string.Empty 
                 }); 
return Json(model.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); 

我個人也可能更改簽名是公共JsonResult而不是ActionResult(只是我這裏偏好)

這應該可以爲你工作。如果您需要更多信息,請告訴我,我將爲您擴展答案。

+0

感謝您的回覆。我做了更改,它仍然返回json。 任何其他的想法? Jim – user151190

+0

那麼你打電話給網格瀏覽器的視圖是什麼? –

+0

視圖的名稱是_ideasForApproval.cshtml – user151190