【发布时间】:2016-09-06 05:39:20
【问题描述】:
在 Grid.Mvc 方面需要帮助。我正在传递 Entity Framework 生成的 IQueryable 集合并获得异常
动作方法:
public ActionResult Index(int id)
{
IQueryable<Document> documents = _dbContext.Document;
var model = new DocumentListViewModel()
{ Documents = documents
};
return View(model);
}
DocumentListViewModel:
public class DocumentListViewModel
{
public IQueryable<Document> Documents { get; set; }
}
查看:
@model CompanyName.DocFlow.Web2.Models.DocumentListViewModel
@using GridMvc.Html;
@Html.Grid(Model.Documents).Columns(columns =>
{
columns.Add(x => x.CreatedDate).Titled("Дата");//.Filterable(true);
columns.Add(x => x.IncomingNumber).Titled("Входящий номер");//.Filterable(true);
columns.Add(x => x.Description).Titled("Краткое описание");
}).WithPaging(10)
例外:
EntityFramework.SqlServer.dll 中出现“System.NotSupportedException”类型的异常,但未在用户代码中处理
附加信息:“Skip”方法仅支持 LINQ to Entities 中的排序输入。必须在方法“Skip”之前调用方法“OrderBy”。
文档说明:
如果您的数据源是数据库(例如),您需要将 IQueryable 集合传递给网格。 Grid.Mvc 使用 IQueryable 接口为您的数据集合构造查询表达式。
当您转到某个页面时,网格会调用 .Skip(N).Take(N) 方法,当您对数据进行排序时,网格会调用 OrderBy 或 OrderByDescending 方法等。
教程链接:Grid.Mvc
【问题讨论】:
-
当您转到某个页面时,网格会调用 .Skip(N).Take(N) 方法,当您对数据进行排序时,网格会调用 OrderBy 或 OrderByDescending 方法等你明白了吗?它只是说你必须使用
OrderBy或OrderByDescending -
网格渲染时出现异常
-
您是否在代码中的任何地方使用了
OrderBy或OrderByDescending? -
@Div 谢谢你的帮助。我在我的操作方法中添加了 OrderBy:
_dbContext.Document.OrderBy(x=>x.Id);并且它有效 -
是的,就是这样,你已经在你的问题中提到了解决方案:)
标签: c# asp.net-mvc grid.mvc