カスタム HtmlHelper で RouteLink を作成するにはどうすればよいですか? 部分ビューで作成する方法は知っていますが、RouteLink を使用してカスタム htmlhelper 拡張メソッドで新しいリンクを作成したいと考えています。これを達成する方法は?
更新: HtmlHelper.GenerateRouteLink に気付きました。しかし、パラメータとして何を入力する必要がありますか?
カスタム HtmlHelper で RouteLink を作成するにはどうすればよいですか? 部分ビューで作成する方法は知っていますが、RouteLink を使用してカスタム htmlhelper 拡張メソッドで新しいリンクを作成したいと考えています。これを達成する方法は?
更新: HtmlHelper.GenerateRouteLink に気付きました。しかし、パラメータとして何を入力する必要がありますか?
これが例です。div
結果のhtmlが次のようになるように、リンクを特定のクラスのタグにラップするとします。
<div class="foo"><a href="/home/index">Some text</a></div>
次の拡張メソッドを記述できます。
public static class HtmlExtensions
{
public static MvcHtmlString CustomRouteLink(
this HtmlHelper htmlHelper,
string className,
string linkText,
object routeValues
)
{
var div = new TagBuilder("div");
div.MergeAttribute("class", className);
div.InnerHtml = htmlHelper.RouteLink(linkText, routeValues).ToHtmlString();
return MvcHtmlString.Create(div.ToString());
}
}
これは次のように使用できます。
<%= Html.CustomRouteLink("foo", "Some text",
new { action = "index", controller = "home" }) %>
これにより、目的のマークアップが生成されます。必要に応じて、他のオーバーロードをRouteLink
使用できます。
UrlHelper のインスタンスを取得したら、HtmlHelper メソッドでやりたいことが何でもできるはずです。
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);