url.Action和@html.PageLinks行导致我的System.OutOfMemoryException

本文关键字:我的 System OutOfMemoryException Action @html PageLinks url | 更新日期: 2023-09-27 18:15:22

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

我现在正在读这本书的第7章,创建一个体育商店。我陷入困境的主要部分是找出为什么我得到一个系统。OutOfMemoryException异常。页链接在我的div。每当我注释掉这些Pagelinks行时,应用程序就会正常工作。我试着遵循微软和其他类似论坛问题给出的所有解决方案,如这个html helper链接,这个其他链接和微软官方页面(support.microsoft.com/en-us/kb/820108)。我一遍又一遍地检查我的代码,以检查它是否与书上的相同。我很抱歉,如果这个特定的问题已经回答了,但我只是找不到一些东西来帮助我。

List.cshtml

@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)
}
<div class= "btn-group pull-right">
    @Html.PageLinks(Model.PagingInfo, x => Url.Action("List",
    new { page = x, category = Model.CurrentCategory }))
</div>
<div class="pager">
    <div>
        @Html.PageLinks(Model.P‌​agingInfo, x => Url.Action("List", new { page = x }))
    </div>
</div>

PagingHelpers.cs

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

如果我错过了什么,我必须为给您带来的不便道歉,因为我可能没有找对地方。我很难寻求帮助,这是我第一次。

谢谢

url.Action和@html.PageLinks行导致我的System.OutOfMemoryException

1 <= pagingInfo.TotalPages始终为true,因此循环将无限期运行,直到内存耗尽为止。

相关文章: