繁体   English   中英

ASP.NET MVC返回视图页面列表

[英]asp.net mvc return view pagedlist

我的动作结果如下

 public ActionResult TheMostClickedEmailReport(int ID, int gonderim,int? page)
        {
            int pageIndex = page ?? 1;
            int pagesize = 10;

            MailingClickService mailingclickservice = new MailingClickService();
            TemplateLinkService tmpservice = new TemplateLinkService();
            int FirmID = (int)Session["FirmID"];
            var linkler = mailingclickservice.GetByCriteria(x => x.MailingID == ID && x.Gonderim == gonderim && x.Mailing.FirmUser.FirmID == FirmID).IslemSonucu.GroupBy(x => x.MailingEmail).ToPagedList(pageIndex, pagesize);



            ViewBag.gonderim = gonderim;
            ViewBag.MailingID = ID;

            List<EmailLinkClickReport> emailcliklistreport = new List<EmailLinkClickReport>();
            if (linkler.Count() > 0)
            {

                foreach (var item in linkler)
                {
                    EmailLinkClickReport emaillinkclick = new EmailLinkClickReport();

                    emaillinkclick.Key = item.Key;
                    emaillinkclick.TotalClicksCount = item.Select(x => x.MailingEmail).Count();
                    emailcliklistreport.Add(emaillinkclick);
                }


                return View(emailcliklistreport);
            }
            else
            {
                return RedirectToAction("MailingReport", "Report", new { id = ID, gonderim = gonderim });
            }
        }

链接器有50个数据。 通过使用foreach链接器中选择10个数据(链接器中的项目)

我想在v ar linkler = mailingclickservice.GetByCriteria(x => x.MailingID == ID && x.Gonderim == gonderim && x.Mailing.FirmUser.FirmID == FirmID).IslemSonucu.GroupBy(x => x.MailingEmail).ToPagedList(pageIndex, pagesize);选择10个数据ar linkler = mailingclickservice.GetByCriteria(x => x.MailingID == ID && x.Gonderim == gonderim && x.Mailing.FirmUser.FirmID == FirmID).IslemSonucu.GroupBy(x => x.MailingEmail).ToPagedList(pageIndex, pagesize); 部分

但是我不知道如何通过返回视图将链接器转换为IPagedList?

如果我返回以下代码

return View(emailcliklistreport);

像下面

return View(emailcliklistreport.ToPagedList(pageIndex,pagesize);

这对我来说不合逻辑,因为我两次返回列表

您有什么建议并建议我更改代码。

如何通过铸造ToPagedList返回链接器以进行查看?

ToPagedList应该是您对数据集执行的最后操作,然后再将其返回到视图。 就目前而言,您将完全放弃PagedList而仅将List<EmailLinkClickReport>返回到视图。

另外,对于有价值的东西,无论如何,这里都不需要foreach循环,因为您可以使用LINQ的Select方法来转换数据集。 尝试:

var linkler = mailingclickservice
    .GetByCriteria(x =>
        x.MailingID == ID &&
        x.Gonderim == gonderim &&
        x.Mailing.FirmUser.FirmID == FirmID)
    .IslemSonucu.GroupBy(x => x.MailingEmail)
    .Select(x => new EmailLinkClickReport
        {
            Key = x.Key;
            TotalClicksCount = x.Count();
        })
    .ToPagedList(pageIndex, pagesize);

我添加了自由间距以使其更易于阅读。 唯一的新部分是“ Select调用。 还从TotalClickCounts删除了Select(x => x.MailingEmail)爵士乐,因为它什么都不做,只是增加了额外的处理时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM