- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Onion 架构设计应用程序,我想使用 Kendo UI 中的网格以及服务器端过滤排序和分页。我想避免手动将 DataSourceRequest 解析为动态 LinQ,而是使用 ToDataSourceResult。
我找到了工作解决方案,其中我的 Controller 包含以下内容:
private ISalesService salesService;
public HomeController(ISalesService salesService)
{
this.salesService = salesService;
}
public JsonResult Post([DataSourceRequest] DataSourceRequest request)
{
var sales = salesService.GetQueryableSales();
return Json(sales , JsonRequestBehavior.AllowGet);
}
ISalesService 映射到我使用存储库的实现,代码如下:
public IQueryable<SalesOrderHeader> GetQueryableSales()
{
if (context == null)
context = new AdventureWorks2012Context();
return context.SalesOrderHeaders;
}
这只是应用程序的骨架,因此服务和存储库中没有任何逻辑。这样我可以避免手动解析 DataSourceRequest,但代价是将 IQueryable 暴露给 MVC 层。我想将 IQueryable 保留在存储库中,并在可能的情况下公开 IEnumerable,或者可能是来自 Kendo UI 库的 DataSourceResult。
我尝试更改我的存储库调用,如下所示:
public DataSourceResult GetSales(DataSourceRequest request)
{
using (var c = new AdventureWorks2012Context())
{
var headersQuery = c.SalesOrderHeaders;
var result = headersQuery.ToDataSourceResult(request);
return result;
}
}
这样我就可以将 IQueryabl 保留在存储库中,并且仍然使用自动 DataSourceRequest 转换为 Kendo UI 提供的动态 LinQ。但这需要从我的数据层引用 Kendo.Mvc 和 System.Web.Mvc,这似乎也不是一个好的选择。
所以我的问题是,是否可以在不影响应用程序分层的情况下自动将 DataSourceRequest 转换为 LinQ?我在 Kendo UI 架构中遗漏了一些东西吗?或者我必须选择手动解析 DataSourceRequest 或在某种程度上损害我的架构?
最佳答案
未引用 Kendo 的存储库方法:
public T GetSales<T>(Func<IQueryable<SalesOrderHeader>, T> processQueryable)
{
using (var c = new AdventureWorks2012Context())
{
return processQueryable(c.SalesOrderHeaders);
}
}
要使用它,您需要一个函数来处理 iqueryable 作为参数,在本例中它返回一个 DataSourceResult:
public JsonResult Post([DataSourceRequest] DataSourceRequest request)
{
DataSourceResult sales = salesService.GetSales<DataSourceResult>(headersQuery=>headersQuery.ToDataSourceResult(request));
return Json(sales , JsonRequestBehavior.AllowGet);
}
关于asp.net-mvc - 如何在 Onion 架构中使用来自 Kendo UI 的 ToDataSourceResult 而不暴露 IQueryable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476507/
KendoUI 添加的扩展方法 (ToDataSourceResult) 似乎在 Pages > Page #1 上失败。第一次加载页面时它工作正常,但是当我尝试将它与虚拟滚动一起使用时,以异步方式获
我广泛使用了 Kendo DataSourceResult ToDataSourceResult(this IQueryable enumerable, DataSourceRequest reque
我一直在分析与 Kendo Grid 小部件一起使用的 MVC Controller 上的 Read 操作方法,并注意到 Entity Framework 及其查询的一些奇怪行为。当我使用 ToDat
我正在使用 Onion 架构设计应用程序,我想使用 Kendo UI 中的网格以及服务器端过滤排序和分页。我想避免手动将 DataSourceRequest 解析为动态 LinQ,而是使用 ToDat
使用以下类加载/过滤/排序剑道网格的最佳方法是什么: 域: public class Car { public virtual int Id { get; set; } public
我是一名优秀的程序员,十分优秀!