私はSteven Sanderson/Adum Freeman Pro ASP .Net MVCの参考書に詰め込まれています。私は185ページに、HTMLヘルパーを使用してリンクのページの数が多い。HTMLヘルパークラスメソッドが動作しない
:私はこのエラーを取得し、ブラウザでコードを実行すると、まだ同じ問題(リンクに) MVC extension method errorCompiler Error Message: CS1973: 'System.Web.Mvc.HtmlHelper' has no applicable method named 'PageLinks' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax
を持つこのリファレンスブックで自分の問題に対処するこのサイトのヘルプを発見し、すべてのステップを歩い
コードがうまく構築されますが、他のクラスを開いてヘルパーメソッドにこのコード行を編集すると、上記と同じエラーが発生します。
@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>
これは働いていた... @ Html.PageLinks((SportsStore.WebUI.Models.PagingInfo)モデルをメインではないフォルダ.PagingInfo、x => Url.Action( "List"、new {page = x})) – Shawn
私は、あなたの例を作った@ using SportsStore.WebUI.Modelsを追加しました。ご協力いただきありがとうございます! – Shawn
質問および/または回答に関連情報を編集してください。新しい回答があればそれを正当なものとして投稿してください。質問/回答のコメントセクションは、関係する人々に役立つかもしれないが、長い議論のためのものではなく、間違い、詳細などのような手元の実際の投稿に関する関連情報のみを対象としています。このディスカッションを続行する必要がある場合は、代わりにチャットルームに持ち込むことを検討してください。 –