C# 使用ViewModels时的TelerikMVC扩展网格过滤器

C# 使用ViewModels时的TelerikMVC扩展网格过滤器,c#,lambda,telerik-grid,telerik-mvc,C#,Lambda,Telerik Grid,Telerik Mvc,我正试图找出最简单的方法来过滤我的网格 @Html.Telerik().Grid<MyViewModel>() .Name("Grid") .Filterable(); @Html.Telerik().Grid() .名称(“网格”) .Filterable(); 我在视图中使用ViewModels,在控制器中使用DomainModels。我使用AutoMapper在它们之间绘制地图。 问题是Telerik网格设计不适用于ViewModels,因此过滤器逻辑会

我正试图找出最简单的方法来过滤我的网格

@Html.Telerik().Grid<MyViewModel>()
     .Name("Grid")
     .Filterable();
@Html.Telerik().Grid()
.名称(“网格”)
.Filterable();
我在视图中使用ViewModels,在控制器中使用DomainModels。我使用AutoMapper在它们之间绘制地图。 问题是Telerik网格设计不适用于ViewModels,因此过滤器逻辑会出错:(

[GridAction(EnableCustomBinding=true)]
公共JsonResult SelectHandled(GridCommand命令)
{
var items=\u repository.asqueryable()

.Where(command.FilterDescriptors)/您可以从控制器返回所有记录,Telerik grid可以自行管理过滤逻辑。从代码中,您可以像这样尝试:

[GridAction(EnableCustomBinding = true)]
public ActionResult SelectHandled(GridCommand command)
{
    IEnumerable<MyViewModel> items = _repository.Get();

    var vms = Mapper.Map<IEnumerable<MyModel>, IEnumerable<MyViewModel>>(items);

   var retColl = new GridModel(vms) { Total = command.PageSize * command.Page };
   return View(retColl);
}
[GridAction(EnableCustomBinding=true)]
公共操作结果SelectHandled(GridCommand命令)
{
IEnumerable items=_repository.Get();
var vms=Mapper.Map(项目);
var retColl=newgridmodel(vms){Total=command.PageSize*command.Page};
返回视图(retColl);
}

这只会进行客户端过滤。因此,要使其起作用,我必须将整个列表发送给客户端,但该列表不起作用。如果要从数据库中获取所有记录,然后尝试使用
.Where(command.FilterDescriptors)手动应用过滤
那么我认为性能不会有太大的提高。因此我仍然希望返回所有记录,让网格自己处理过滤逻辑,以避免复杂性。
\u repository.Get()
应该是
\u repository.asqueryable()
。更正了帖子。因此它在数据库上被过滤。
[GridAction(EnableCustomBinding = true)]
public ActionResult SelectHandled(GridCommand command)
{
    IEnumerable<MyViewModel> items = _repository.Get();

    var vms = Mapper.Map<IEnumerable<MyModel>, IEnumerable<MyViewModel>>(items);

   var retColl = new GridModel(vms) { Total = command.PageSize * command.Page };
   return View(retColl);
}