C# Kendo UI-网格绑定和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

我希望使用KendoUIGrid组件(排序、筛选、分页),但我的应用程序具有N层体系结构(数据访问层、业务层和web项目),因此我无法向服务器绑定提供数据库集

目前,我正在将网格与数据库中的所有实体绑定,以便网格可以处理这些数据。但我想知道一种避免“获取所有”请求的方法

在这样的体系结构中使用它有什么好处吗?

好的,我发现那个家伙和我有同样的“问题”(n层应用程序)


显然,唯一的解决方案是实现自定义服务器绑定()。

最好使用
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