2014-10-10 4 views
1

Я могу заполнить элементы в сетке только при передаче модели напрямую. Если я попытаюсь получить данные Json, я не смогу.ASP.NET MVC kendo grid

Вот мой контроллер:

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

+1

Получены ли ошибки в консоли браузера? Ваш запрос попал в действие? –

+1

Я изменил, чтобы использовать Список и все еще никаких данных. Нет ошибок и да, это действие, и я вижу, что он извлекает данные, но список по-прежнему пуст ... это очень странно. –

ответ

0

Я тоже не вижу такой проблемы. Но попробуйте три вещи, позвольте получить.

return Json(result, JsonRequestBehavior.AllowGet); 

Во-вторых, я не думаю, что это проблема, но попробуйте использовать List вместо IQueryable.

Наконец, попробуйте вернуть JsonResult вместо ActionResult.

Надеюсь, это поможет.

+0

Я попробовал обе вещи и никаких результатов ... Я не понимаю, что происходит. .. –

+0

Удаляет ли он бэкэнд? Я имею в виду функцию Read() в контроллере учащихся. Он возвращает значение, правильно? – Mahib

+0

[JsonResult] (http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult%28v=vs.118%29.aspx) * - это ActionResult (это производный тип) , но использование более конкретного типа возврата ничего не меняет. –

0

Наконец, попробовав все (спасибо всем вам), я начал новый проект, и он сработал. Я не знаю, что случилось, но теперь он работает. Спасибо

Смежные вопросы