【发布时间】:2016-10-28 17:13:55
【问题描述】:
我是一名有抱负的初级开发人员,目前正在关注 Adam Freeman 的 PRO ASP.NET MVC 5 书籍。当我创建自己的模板应用程序版本时,我非常享受遵循示例和学习的过程。但是,我最近遇到了一个非常烦人的问题,我尽力鼓励自己不要在 StackOverflow 上问它,因为它可能已经被问到了。
我目前正在阅读本书的第 7 章,创建一家体育用品商店。我陷入困境的主要部分是找出为什么每当我在我的 Div 中使用 @Html.PageLinks 时都会得到 System.OutOfMemoryException。每当我注释掉那些 Pagelinks 行时,应用程序就像一个魅力。我尝试关注微软提供的所有解决方案以及其他类似的论坛问题,例如this html helper link、this other link 和微软官方页面 (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.PagingInfo, 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());
}
}
}
如果我遗漏了任何内容,我必须为给您带来的不便深表歉意,因为我可能没有找对地方。我有一个大问题寻求帮助,这是我第一次。
谢谢
【问题讨论】:
-
循环中的错字
for (int i = 1; 1 <= pagingInfo.TotalPages; i++)导致无限循环。修改为for (int i = 1; i <= pagingInfo.TotalPages; i++) -
@MikeDebela 我猜你有问题。但应该是
for (int i=1; i < pagingInfo.TotalPages; i++)吗? -
@SivaGopal OP 使用的条件是
1 <= ...。应该是i <= ... -
非常感谢你们,我现在感觉很盲目哈哈,@SivaGopal 我相信这本书也有这样的条件部分,虽然不知道为什么,但也许它与确保制作尽可能多的按钮?再次感谢大家!
-
@AbdulAl-haj 技术书籍经常包含错误。通常,出版商会在其网站上发布勘误和更正。但是,我没有看到 errata for this book 中提到您的错误。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor