私はこれを持っています:
public class PagesModel
{
public string ControllerName { get; set; }
public string ActionName { get; set; }
public int PagesCount { get; set; }
public int CurrentPage { get; set; }
public object RouteValues { get; set; }
public object HtmlAttributes { get; set; }
}
public static MvcHtmlString RenderPages(this HtmlHelper helper, PagesModel pages, bool isNextAndPrev = false)
{
//some code
var lastPageSpan = new TagBuilder("span");
var firstValueDictionary = new RouteValueDictionary(pages.RouteValues) { { "page", pages.PagesCount } };
lastPageSpan.InnerHtml = helper.ActionLink(">>", pages.ActionName, pages.ControllerName, firstValueDictionary, pages.HtmlAttributes).ToHtmlString();
return MvcHtmlString.Create(lastPageSpan.ToString());
}
生成されるリンクは次のようになります。<span><a href="/Forums/Thread?Count=2&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D">>></a></span>
なんで?私は何を間違っていますか?を設定する前にブレークポイントを置く.innerHtml
と、私のfirstValueDictionary
見た目は完全に正常であることがわかります。何が起こっている?
更新RouteValueDictionary
:パラメーターを新しく作成した匿名型 ( ) に置き換えるとnew {page = 0}
、すべて正常に動作します。定義済みを使用できないのはなぜRouteValueDictionary
ですか?