-1

似乎我在使用 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>
4

1 回答 1

0

上个月我第一次尝试 MVCCONTRIB 网格时遇到了类似的问题。我通过将 Ipagination 结果分配给另一个变量并将其作为 View 返回来修复它。

像这样的东西 -

var temp = userList.AsPagination(page ?? 1, 5);
return View( temp);
于 2013-01-25T09:53:52.773 回答