2014-10-10 190 views
1

只有當我直接傳遞模型時,我才能填充網格中的項目。如果我試圖獲得Json數據,我不能。ASP.NET MVC劍道網格

這裏是我的控制器:

namespace MVC_Test1.Controllers 
{ 
    public class StudentsController : Controller 
    { 
     private ContosoUniversityEntities db = new ContosoUniversityEntities(); 

     public ActionResult Index() 
     { 
      db.Configuration.ProxyCreationEnabled = false; 
      return View(db.students.ToList()); 
     } 


     public ActionResult Read([DataSourceRequest] DataSourceRequest request) 
     { 
      using (var northwind = new ContosoUniversityEntities()) 
      { 
       IQueryable<student> students = northwind.students; 
       DataSourceResult result = students.ToDataSourceResult(request); 

       return Json(result); 
      } 
     } 
    } 
} 

如果我有這種說法電網工程,並顯示所有項目:

@model MVC_Test1.Models.student 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

@*@(Html.Kendo().Grid(Model) 
    .Name("grid") 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .ServerOperation(false) 
    ) 
    .Columns(columns => 
    { 
     columns.Bound(p => p.FirstName); 
     columns.Bound(p => p.LastName); 
    }) 
)*@ 

但如果我嘗試從JSON讀它不起作用。它顯示一個空格子。

@(Html.Kendo().Grid<MVC_Test1.Models.student>() 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.FirstName); 
     columns.Bound(p => p.LastName); 
    }) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Read(read => read.Action("Read", "Students")) 
    ) 
) 

我確定我做錯了什麼,但我弄不明白。感謝您的幫助。

+0

這可能是因爲您使用'IQueryable'而不是'List' – CSharper 2014-10-10 17:55:08

+1

您是否在瀏覽器控制檯中看到錯誤?您的請求是否觸及了該操作? – 2014-10-10 18:14:47

+1

我已更改爲使用列表,但仍然沒有數據。沒有錯誤,是的,它是擊中行動,我看到它正在檢索數據,但列表仍然是空的......這是非常奇怪的 – 2014-10-12 05:34:44

回答

0

我也看不出那麼多問題。但嘗試三件事,讓獲得。

return Json(result, JsonRequestBehavior.AllowGet); 

其次,我不認爲這是一個問題,但嘗試使用List而不是IQueryable。

最後,嘗試返回JsonResult,而不是的ActionResult

希望這會有所幫助。

+0

我已經嘗試了兩件事情,沒有結果......我不明白髮生了什麼事。 .. – 2014-10-12 05:39:02

+0

它打到後端?我是指學生控制器中的Read()函數。它確實返回值,對嗎? – Mahib 2014-10-12 09:52:40

+0

[JsonResult](http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult%28v=vs.118%29.aspx)*是一個ActionResult(它是派生類型) ,但使用更具體的返回類型並不會真正改變任何內容。 – 2014-10-12 20:00:44

0

最後,在嘗試了所有事情之後(感謝你們所有人),我開始了一個新的項目並且它工作。我不知道什麼是錯,但現在它正在工作。謝謝