Kendo UI - 网格绑定和n层应用程序

时间:2014-09-04 08:52:06

标签: c# kendo-ui kendo-grid kendo-asp.net-mvc

我想使用Kendo UI Grid组件(排序,过滤,分页),但我的应用程序有一个N层架构(数据访问层,业务层和Web项目),所以我无法提供一个DbSet到服务器绑定。

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

无论如何使用这种架构吗?

2 个答案:

答案 0 :(得分:0)

好的,我发现a thread这个家伙和我有同样的“问题”(n层申请)。

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

答案 1 :(得分:0)

最好使用ViewModel,以防止从Entity Class直接访问View。以下是在KendoGrid n层应用程序中使用ASP.NET MVC的示例:

<强>控制器:

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)
        )
)

希望这会有所帮助......