C# Kendo UI-网格绑定和n层应用程序
我希望使用KendoUIGrid组件(排序、筛选、分页),但我的应用程序具有N层体系结构(数据访问层、业务层和web项目),因此我无法向服务器绑定提供数据库集 目前,我正在将网格与数据库中的所有实体绑定,以便网格可以处理这些数据。但我想知道一种避免“获取所有”请求的方法 在这样的体系结构中使用它有什么好处吗?好的,我发现那个家伙和我有同样的“问题”(n层应用程序)C# Kendo UI-网格绑定和n层应用程序,c#,kendo-ui,kendo-grid,kendo-asp.net-mvc,C#,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我希望使用KendoUIGrid组件(排序、筛选、分页),但我的应用程序具有N层体系结构(数据访问层、业务层和web项目),因此我无法向服务器绑定提供数据库集 目前,我正在将网格与数据库中的所有实体绑定,以便网格可以处理这些数据。但我想知道一种避免“获取所有”请求的方法 在这样的体系结构中使用它有什么好处吗?好的,我发现那个家伙和我有同样的“问题”(n层应用程序) 显然,唯一的解决方案是实现自定义服务器绑定()。最好使用ViewModel,以防止从视图直接访问实体类。下面是在ASP.NET MV
显然,唯一的解决方案是实现自定义服务器绑定()。最好使用
ViewModel
,以防止从视图直接访问实体类。下面是在ASP.NET MVC
n层应用程序中使用KendoGrid
的示例:
控制器:
private EFDbContext db = new EFDbContext();
public ActionResult Index_Read([DataSourceRequest] DataSourceRequest request)
{
var dataContext = db.YourEntity;
var result = dataContext.Select(m => new
YourViewModel
{
ID = m.ID,
Name= m.Name
//code omitted for brevity
}
).ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
@(Html.Kendo().Grid<YourViewModel>()
.Name("YourGrid")
.Columns(columns =>
{
columns.Bound(m => m.ID).Title("Id");
columns.Bound(m => m.Name).Title("Contact Person");
})
.Reorderable(r => r.Columns(true))
.Pageablee()
.Scrollable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Index_Read", "YourController"))
.ServerOperation(false)
.PageSize(12)
)
)
查看:
private EFDbContext db = new EFDbContext();
public ActionResult Index_Read([DataSourceRequest] DataSourceRequest request)
{
var dataContext = db.YourEntity;
var result = dataContext.Select(m => new
YourViewModel
{
ID = m.ID,
Name= m.Name
//code omitted for brevity
}
).ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
@(Html.Kendo().Grid<YourViewModel>()
.Name("YourGrid")
.Columns(columns =>
{
columns.Bound(m => m.ID).Title("Id");
columns.Bound(m => m.Name).Title("Contact Person");
})
.Reorderable(r => r.Columns(true))
.Pageablee()
.Scrollable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Index_Read", "YourController"))
.ServerOperation(false)
.PageSize(12)
)
)
@(Html.Kendo().Grid())
.Name(“您的网格”)
.列(列=>
{
columns.Bound(m=>m.ID).Title(“ID”);
columns.Bound(m=>m.Name).Title(“联系人”);
})
.Reorderable(r=>r.Columns(true))
.Pageablee()
.Scrollable()
.Groupable()
.DataSource(DataSource=>DataSource
.Ajax()
.Read(Read=>Read.Action(“Index\u Read”,“YourController”))
.ServerOperation(错误)
.页面大小(12)
)
)
希望这有帮助……我需要了解您不想实现RESTful API吗?我只是不想在web项目中直接访问DbContext。我以为您只在JS中使用Kendo UI,但我知道您使用的是ASP.NET MVC绑定。。是的,我使用的是ASP.NET MVC绑定。@bod我帮不上忙,因为我使用过剑道UI的网格,但直接使用JS