关于导致我的 System.OutOfMemoryException 的 c#:url.action 和 @html.PageLinks 行

url.action and @html.PageLinks lines causing my System.OutOfMemoryException

我是一名有抱负的初级开发人员,目前正在关注 Adam Freeman 的 PRO ASP.NET MVC 5 书籍。当我创建自己的模板应用程序版本时,我非常享受遵循示例和学习的过程。然而,我最近遇到了一个非常烦人的问题,我尽力鼓励自己不要在 StackOverflow 上问它,因为它可能已经被问到了。

我目前正在阅读本书的第 7 章,创建一家体育用品商店。我陷入困境的主要部分是找出为什么每当我在我的 Div 中使用 @Html.PageLinks 时都会得到 System.OutOfMemoryException。每当我注释掉这些 Pagelinks 行时,该应用程序就像一个魅力。我尝试关注 Microsoft 提供的所有解决方案以及其他类似的论坛问题,例如此 html 帮助链接、此其他链接和 Microsoft 官方页面 (support.microsoft.com/en-us/kb/820108)。我一遍又一遍地检查我的代码,以检查它是否与书中的相同。如果这个特定问题已经得到解答,我很抱歉,但我找不到可以帮助我的东西。

List.cshtml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@model TheKicks.WebUI.Models.ProductsListViewModel
@using TheKicks.WebUI.HtmlHelpers;
@using TheKicks.WebUI.Models

@{
    ViewBag.Title ="Products";
}
@foreach (var p in Model.Products)
{
    @Html.Partial("ProductSummary", p)
}


    @Html.PageLinks(Model.PagingInfo, x => Url.Action("List",
    new { page = x, category = Model.CurrentCategory }))



   
        @Html.PageLinks(Model.P??agingInfo, x => Url.Action("List", new { page = x }))

PagingHelpers.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using TheKicks.WebUI.Models;

namespace TheKicks.WebUI.HtmlHelpers
{
    public static class PagingHelpers
    {
        public static MvcHtmlString PageLinks(this HtmlHelper html,
                                                    PagingInfo pagingInfo,
                                                    Func<int, string> pageUrl)
        {
            StringBuilder result = new StringBuilder();
            for (int i = 1; 1 <= pagingInfo.TotalPages; i++)
            {
                TagBuilder tag = new TagBuilder("a");
                tag.MergeAttribute("href", pageUrl(i));
                tag.InnerHtml = i.ToString();
                if(i == pagingInfo.CurrentPage)
                {
                    tag.AddCssClass("selected");
                    tag.AddCssClass("btn-primary");
                }
                tag.AddCssClass("btn btn-default");
                result.Append(tag.ToString());
           }
            return MvcHtmlString.Create(result.ToString());
        }
    }
}

如果我错过了什么,我必须为给您带来的不便深表歉意,因为我可能没有找对地方。我有一个大问题寻求帮助,这是我第一次。

谢谢


1 <= pagingInfo.TotalPages 始终为真,因此您的循环将无限期地运行,直到内存不足。将 1 替换为 i 变量。