似乎我在使用 MVCContrib 时遇到了麻烦。我正在使用 MVC4 构建一个网站,我想显示一个显示所有用户的数据网格我的数据模型是由 ADO.NET 实体数据模型构建的,但我对其进行了修改,以便我可以在 MVC4 中轻松使用它。当我尝试实现分页功能时,它抛出一个错误:“方法'Skip'仅支持在LINQ to Entities中排序输入。方法'OrderBy'必须在方法'Skip'之前调用。”源错误是on:@Html.Grid(Model).Sort(ViewBag.SortModel as GridSortOptions).Columns(column =>
我不知道如何解决这个问题。在这种情况下,如果我只是使用排序,没有问题。仅当我在网站中添加分页功能时才会出现此问题(PS:我尝试只使用分页,但它仍然给我同样的错误)。
请帮我 :)
在控制器上:
public ActionResult Index(int? page, GridSortOptions SortModel)
{
userRsy = new UserRepository();
if (CookieUserName == "")
{
return RedirectToAction("Index", "Home");
}
else
{
DBEntities _db = new DBEntities();
//ViewData.Model = _db.Users;
ViewBag.SortModel = SortModel;
IEnumerable<User> userList = _db.Users;
if (!string.IsNullOrEmpty(SortModel.Column))
{
userList = userList.OrderBy(SortModel.Column, SortModel.Direction);
//userList = userList.OrderBy(u => u.UserName);
}
//find login user
var _user = userRsy.Find(CookieUserName);
//ViewBag.Title = _user.FirstName + ", Welcom to E-Tabs Dashboard Management Center";
//Check user admin level
ViewBag.User = _user.FirstName;
ViewBag.Account = _user.UserName;
ViewBag.IsAdmin = false;
if (userRsy.AdminCheck(_user.UserName) == 99)
{ ViewBag.IsAdmin = true; }
//Pagination
userList = userList.AsPagination(page ??1,5);
//show view
return View(userList);
}
}
在 cshtml 文件上:
@model IPagination<E_Tabs_Generic_Portal.Models.User>
@using MvcContrib.UI.Grid;
@using MvcContrib.Pagination;
@using MvcContrib.UI.Pager;
@using MvcContrib.Sorting;
@{
ViewBag.Title = "User";
Layout = "~/Views/Shared/_HomeLayout.cshtml";
}
<div class="content-1">
<h2>User List</h2>
@Html.Grid(Model).Sort(ViewBag.SortModel as GridSortOptions).Columns(column =>
{
column.For(p => p.UserName).Named("User Name");
column.For(p => p.IsEnabled).Named("Enabled");
column.For(p => p.FirstName).Named("First Name");
column.For(p => p.LastName).Named("Last Name");
column.For(p => p.Email).Named("E-Mail");
column.For(p => p.Company).Named("Company");
column.For(p => p.ServerName).Named("On Server #");
column.For(p => p.LastLoginTime).Named("Last Login").Format("{0:yyyy/MM/dd HH:mm}");
}
).Attributes( @class=>"Grid",@width =>"100%", @border =>"1", @style =>"text-align:center;border-collapse:collapse")
@Html.Pager(Model).First("First").Next(">>").Previous("<<").Last("Last").Format("Total{2}, Current{0}-{1} ")
</div>