【发布时间】:2012-04-05 14:06:34
【问题描述】:
我被 Steven Sanderson/Adum Freeman Pro ASP .Net MVC 3 的参考书困住了。我已经写到了第 185 页,其中 HTML 帮助器将用于返回链接中的页面编号。我在这个网站上找到了解决我与这本参考书问题的帮助,并完成了每一步仍然有同样的问题(链接)MVC extension method error
当我在浏览器中运行代码时出现此错误:
编译器错误消息:CS1973:'System.Web.Mvc.HtmlHelper' 没有名为“PageLinks”的适用方法,但似乎有一个 该名称的扩展方法。扩展方法不能动态 派出。考虑强制转换动态参数或调用 没有扩展方法语法的扩展方法
代码构建良好,但如果我打开任何其他类以将这行代码编辑到我的辅助方法中,则会出现与上述相同的错误。
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x}))
助手类:
namespace SportsStore.WebUI.HtmlHelpers
{
public static class PagingHelpers
{
public static MvcHtmlString PageLinks(this HtmlHelper html,
PagingInfo pagingInfo,
Func<int, string> pageURL)
{
StringBuilder results = new StringBuilder();
for (int i = 1; i <= pagingInfo.TotalPages; i++)
{
TagBuilder tag = new TagBuilder("a");
tag.MergeAttribute("href", pageURL(i));
tag.InnerHtml = i.ToString();
if (i == pagingInfo.CurrentPage)
tag.AddCssClass("selected");
results.Append(tag.ToString());
}
return MvcHtmlString.Create(results.ToString());
}
}
}
我的观点:
@{
ViewBag.Title = "Products";
}
@foreach (var p in Model.Products) {
<div class="item">
<h3>@p.Name</h3>
@p.Description
<h4>@p.Price.ToString("c")</h4>
</div>
}
<div class="pager">
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x}))
</div>
Web.config
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="SportsStore.WebUI.HtmlHelpers"/>
</namespaces>
</pages>
</system.web.webPages.razor>
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 html-helper