Asp.net mvc 3 MVC Contrib网格在.OrderBy()上失败,出现NHibernate异常
我一直在遵循使用MVC contrib创建网格的良好演练 然而,我的版本使用的是NHibernate,而不是linq to实体 代码在排序之前运行良好Asp.net mvc 3 MVC Contrib网格在.OrderBy()上失败,出现NHibernate异常,asp.net-mvc-3,nhibernate,fluent-nhibernate,mvccontrib-grid,Asp.net Mvc 3,Nhibernate,Fluent Nhibernate,Mvccontrib Grid,我一直在遵循使用MVC contrib创建网格的良好演练 然而,我的版本使用的是NHibernate,而不是linq to实体 代码在排序之前运行良好 public ActionResult Index(string clientName, int? countryId, GridSortOptions gridSortOptions, int? page) { var clientList = from c in this.ClientRepository.Qu
public ActionResult Index(string clientName, int? countryId, GridSortOptions gridSortOptions, int? page)
{
var clientList = from c in this.ClientRepository.Query
select new ListedClientViewModel(c);
//Set default sort column
if (string.IsNullOrWhiteSpace(gridSortOptions.Column))
gridSortOptions.Column = "ClientName";
// Filter on clientName
if (!string.IsNullOrWhiteSpace(clientName))
clientList = clientList.Where(c => c.ClientName.StartsWith(clientName));
// Filter on country
if (countryId.HasValue)
clientList = clientList.Where(c => c.CountryId == countryId);
// Order and page the clients
var clientPageList = clientList
//Sorting causes error.
//.OrderBy(gridSortOptions.Column, gridSortOptions.Direction)
.AsPagination(page ?? 1, 10);
var clientListContainer = new ClientListContainerViewModel
{
ClientPageList = clientPageList,
GridSortOptions = gridSortOptions
};
return View(clientListContainer);
}
如果我取消注释行.OrderBy(gridSortOptions.Column,gridSortOptions.Direction)
它将在使用System.NotSupportedException{“NewExpression”}点击视图时失败
有没有办法解决这个问题
非常感谢,科汉。解决了这个问题。。。只需在应用过滤和排序之后再强制转换视图模型
var clientList = this.ClientRepository.Query;
...
...
// Order and page the clients
var clientPageList = clientList
//Sorting no longer causes error.
.OrderBy(gridSortOptions.Column, gridSortOptions.Direction)
.Select(c => new ListedClientViewModel(c))
.AsPagination(page ?? 1, 10);