【问题标题】:How to use IPagedList paging feature with viewmodel and join in asp .net mvc如何在 viewmodel 中使用 IPagedList 分页功能并加入 asp .net mvc
【发布时间】:2016-06-23 09:55:52
【问题描述】:

我是 asp .net mvc 的新手,我正在尝试使用 viewmodel 和 join 实现 IPagedList 分页功能。对于普通页面,分页和搜索工作正常,但我无法使用视图模型和连接。

我正在遵循这种方法:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

这是我的 ViewModel 类:

 public class SponserDisplayViewModel
    {
        public Sponser Sponser { get; set; }
        public SponserDetail SponserDetail { get; set; }
        public SponserType SponserType { get; set; }
    } //--- Here All three are different classes.

这是我在 Controller 中尝试过的:

public ActionResult Index(string searchString, int? page, string btnSearch)
        {
            var viewModel = from s in db.Sponsers
                            join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
                            from st in st2.DefaultIfEmpty()
                            select new SponserDisplayViewModel { Sponser = s, SponserType = st };

            if (btnSearch == "Reset")
            { searchString = string.Empty; }
            if (!String.IsNullOrEmpty(searchString))
            {
                viewModel = from s in db.Sponsers
                            join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
                            from st in st2.DefaultIfEmpty()
                            where st.Name.Contains(searchString)
                            select new SponserDisplayViewModel { Sponser = s, SponserType = st };
            }
            int pageSize = 20;
            int pageIndex = 1;
            pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;


//==================Getting error here
            IPagedList<SponserDisplayViewModel> po = from s in db.Sponsers
                                            join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
                                            from st in st2.DefaultIfEmpty().OrderBy(a => a.DisplayOrder).ToPagedList(pageIndex, pageSize)
                                            select new SponserDisplayViewModel { Sponser = s, SponserType = st };

            return View(po);
        }

请推荐

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    得到我的答案:

    var po = from s in db.Sponsers
             join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
             from st in st2.DefaultIfEmpty
             orderby st.DisplayOrder
             select new SponserDisplayViewModel { Sponser = s, SponserType = st };
    return View(po.ToPagedList(pageIndex, pageSize));
    

    【讨论】:

      【解决方案2】:

      它对我有用

      int pagesize = 7, pageindex = 1;
              pageindex = page.HasValue ? Convert.ToInt32(page) : 1;
              var list = db.tbl_Category.Where(x => x.C_Status == 1).ToList();
              IPagedList<tbl_Category> showlis = list.ToPagedList(pageindex, pagesize);
      

      【讨论】:

      • 嗨,欢迎来到 Stack Overflow。在回答已经有公认答案的问题时,请务必添加一些额外的见解,说明为什么您提供的回复是实质性的,而不是简单地呼应原始发帖人已经审查过的内容。这在您提供的“纯代码”答案中尤其重要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 2016-10-29
      相关资源
      最近更新 更多