【问题标题】:MVC Contrib grid failing on .OrderBy() with NHibernate ExceptionMVC Contrib 网格在 .OrderBy() 上失败并出现 NHibernate 异常
【发布时间】:2011-10-31 23:00:07
【问题描述】:

我一直在关注 this 使用 MVC contrib 创建网格的不错的演练。

然而,我的版本使用的是 NHibernate,而不是 linq 到实体。

代码在排序之前运行良好。

    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"} 到达视图时失败

有什么办法可以解决这个问题吗?

非常感谢,Kohan。

【问题讨论】:

    标签: asp.net-mvc-3 nhibernate fluent-nhibernate mvccontrib-grid


    【解决方案1】:

    解决了...只需在应用过滤和排序之后再转换视图模型。

      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);
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 2020-04-10
      • 2017-06-15
      • 2021-12-21
      • 2021-03-04
      • 1970-01-01
      • 2015-02-20
      相关资源
      最近更新 更多