C# 数据源未读取控制器方法
我是asp.NETMVC新手,遇到了一个问题。数据源无法读取我的jsonresult方法,并且没有要显示的项 家庭控制器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
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;
}
}