0

カスタム HtmlHelper で RouteLink を作成するにはどうすればよいですか? 部分ビューで作成する方法は知っていますが、RouteLink を使用してカスタム htmlhelper 拡張メソッドで新しいリンクを作成したいと考えています。これを達成する方法は?

更新: HtmlHelper.GenerateRouteLink に気付きました。しかし、パラメータとして何を入力する必要がありますか?

4

2 に答える 2

3

これが例です。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使用できます。

于 2010-06-22T16:50:27.180 に答える
1

UrlHelper のインスタンスを取得したら、HtmlHelper メソッドでやりたいことが何でもできるはずです。

UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
于 2010-06-22T13:43:39.837 に答える