C# 数据源未读取控制器方法

C# 数据源未读取控制器方法,c#,asp.net-mvc,kendo-ui,C#,Asp.net Mvc,Kendo Ui,我是asp.NETMVC新手,遇到了一个问题。数据源无法读取我的jsonresult方法,并且没有要显示的项 家庭控制器 public ActionResult Index() { return View(); } public JsonResult GetData() { using (GridEnt db = new GridEnt()) { List<Cours> course

我是asp.NETMVC新手,遇到了一个问题。数据源无法读取我的jsonresult方法,并且没有要显示的项

家庭控制器

 public ActionResult Index()
    {
        return View();

    }
 public JsonResult GetData()
    {
        using (GridEnt db = new GridEnt())
        {
            List<Cours> courses = db.Courses.ToList();
            List<Teacher> teachers = db.Teachers.ToList();

            var courseRecord = from t in teachers
                               join c in courses on t.Id equals c.Fk_Teacher into table1
                               from c in table1.ToList()
                               select new ViewModel
                               {
                                   teacher = t,
                                   cours = c,
                               };
            //return View(courseRecord);
            return Json(courseRecord, JsonRequestBehavior.AllowGet);
        }
    }
public ActionResult Index()
{
返回视图();
}
公共JsonResult GetData()
{
使用(GridEnt db=new GridEnt())
{
List courses=db.courses.ToList();
List teachers=db.teachers.ToList();
var courseRecord=来自教师中的t
在t上的课程中加入c。Id等于表1中的c.Fk_教师
来自表1.ToList()中的c
选择“新建视图模型”
{
教师=t,
cours=c,
};
//返回视图(课程记录);
返回Json(courseRecord,JsonRequestBehavior.AllowGet);
}
}
Index.cshtml

@(Html.Kendo().Grid<KendoUIApp.Models.ViewModel>() 
.Name("grid")
.AutoBind(true)
.Columns(columns =>
{
    columns.Bound(p => p.cours.Code).Title("Course Code").Filterable(false);
    columns.Bound(p => p.cours.Name).Title("Course");
    columns.Bound(p => p.cours.Language).Title("Course Language");
    columns.Bound(p => p.teacher.Name).Title("Teacher Name");
    columns.Bound(p => p.teacher.Surname).Title("Teacher Surname");
})
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Read(read => read.Url(Url.Action("GetData", "Home", new { httproute = "" })))
 )
@(Html.Kendo().Grid())
.名称(“网格”)
.AutoBind(真)
.列(列=>
{
columns.Bound(p=>p.cours.Code).Title(“课程代码”).Filterable(false);
columns.Bound(p=>p.cours.Name).Title(“课程”);
columns.Bound(p=>p.cours.Language).Title(“课程语言”);
columns.Bound(p=>p.teacher.Name).Title(“教师姓名”);
columns.Bound(p=>p.teacher.姓氏).Title(“教师姓氏”);
})
.Pageable()
.Sortable()
.Scrollable()
.可过滤()
.HtmlAttributes(新的{style=“height:550px;”})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(20)
.Read(Read=>Read.Url(Url.Action(“GetData”,“Home”,new{httproute=”“})))
)

)

剑道网格希望结果采用不同的格式。返回的JSON应该如下所示:

{总计:…,数据:…}

要实现这一点,您需要进行更改,您需要添加一个请求参数并使用ToDataSourceResult扩展方法。然后,您的GetData方法应该如下所示:

public JsonResult GetData([DataSourceRequest]DataSourceRequest请求)
{
使用(GridEnt db=new GridEnt())
{
List courses=db.courses.ToList();
List teachers=db.teachers.ToList();
var courseRecord=来自教师中的t
在t上的课程中加入c。Id等于表1中的c.Fk_教师
来自表1.ToList()中的c
选择“新建视图模型”
{
教师=t,
cours=c,
};
//返回视图(课程记录);
返回Json(courseRecord.ToDataSourceResult(request),JsonRequestBehavior.AllowGet);
}
}

只有在应用程序中阻止GET请求时,才需要“JsonRequestBehavior.AllowGet”部分。

您必须使用
和Kendo.Mvc.Extensions

修改控制器操作,如下所示

 public ActionResult GetData([DataSourceRequest]DataSourceRequest request)
{
    using (GridEnt db = new GridEnt())
    {
        List<Cours> courses = db.Courses.ToList();
        List<Teacher> teachers = db.Teachers.ToList();

        var courseRecord = from t in teachers
                           join c in courses on t.Id equals c.Fk_Teacher into table1
                           from c in table1.ToList()
                           select new ViewModel
                           {
                               teacher = t,
                               cours = c,
                           };
        DataSourceResult result = courseRecord.ToDataSourceResult(request);
        var jsonResult = Json(result, JsonRequestBehavior.AllowGet);
        jsonResult.MaxJsonLength = int.MaxValue;
        return jsonResult;
    }
}
假设您想要传递一个如问题中所示的参数,请遵循以下语法

.Read(read => read.Url(Url.Action("GetData", "Home", new { httproute = "" })))
控制器动作中

 public ActionResult GetData([DataSourceRequest]DataSourceRequest request,string httproute)
  {
      //You can use `httproute`
      using (GridEnt db = new GridEnt())
      {
        List<Cours> courses = db.Courses.ToList();
        List<Teacher> teachers = db.Teachers.ToList();

        var courseRecord = from t in teachers
                       join c in courses on t.Id equals c.Fk_Teacher into table1
                       from c in table1.ToList()
                       select new ViewModel
                       {
                           teacher = t,
                           cours = c,
                       };
       DataSourceResult result = courseRecord.ToDataSourceResult(request);
      var jsonResult = Json(result, JsonRequestBehavior.AllowGet);
      jsonResult.MaxJsonLength = int.MaxValue;
      return jsonResult;
    }
  }
public ActionResult GetData([DataSourceRequest]DataSourceRequest请求,字符串httproute)
{
//您可以使用“httproute”`
使用(GridEnt db=new GridEnt())
{
List courses=db.courses.ToList();
List teachers=db.teachers.ToList();
var courseRecord=来自教师中的t
在t上的课程中加入c。Id等于表1中的c.Fk_教师
来自表1.ToList()中的c
选择“新建视图模型”
{
教师=t,
cours=c,
};
DataSourceResult结果=courseRecord.ToDataSourceResult(请求);
var jsonResult=Json(result,JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength=int.MaxValue;
返回jsonResult;
}
}

尝试使用
.Read(Read=>Read.Action(“GetData”,“Home”)
没有帮助..我在_Layout.cshtml文件中添加了更多关于我添加的链接的信息。当调试
GetData
方法时,是否返回了任何数据?通常,该方法返回所需的数据,问题是在剑道UI初始化期间,没有调用GetData方法。@GintareMorkūnaite with
.AutoBind(true)
(默认情况下已为
true
)初始化后应立即打开对该url的请求。是否检查了控制台的“网络”选项卡以获取该请求?
 public ActionResult GetData([DataSourceRequest]DataSourceRequest request,string httproute)
  {
      //You can use `httproute`
      using (GridEnt db = new GridEnt())
      {
        List<Cours> courses = db.Courses.ToList();
        List<Teacher> teachers = db.Teachers.ToList();

        var courseRecord = from t in teachers
                       join c in courses on t.Id equals c.Fk_Teacher into table1
                       from c in table1.ToList()
                       select new ViewModel
                       {
                           teacher = t,
                           cours = c,
                       };
       DataSourceResult result = courseRecord.ToDataSourceResult(request);
      var jsonResult = Json(result, JsonRequestBehavior.AllowGet);
      jsonResult.MaxJsonLength = int.MaxValue;
      return jsonResult;
    }
  }