2

asp.netmvc2プロジェクトでHtmlヘルパークラスを作成しました。

public static class CaptionExtensions
{
    public static string Captions(this HtmlHelper helper, Captions captions)
    {
        var sb = new StringBuilder();
        sb.AppendLine("<ul>");

        foreach (var caption in captions)
        {
            //  var url = Url.Action("CaptionCategory", new {id = caption.Code} )

            sb.AppendLine("<li>");
            sb.AppendLine(  "<a href="+ url + ">");
            sb.AppendLine(      caption);
            sb.AppendLine(  "</a>");
            sb.AppendLine("</li>");
        }

        sb.AppendLine("</ul>");


        return sb.ToString();
    }
}

コメント行の方法と同様のURLを生成する必要があります。コメント付きのコードは、コントローラークラスでの実行方法ですが、これはヘルパークラス(静的コンテキスト)です。どんな助けでも???

4

1 に答える 1

5

HtmlHelperのRequestContextプロパティからUrlHelperを作成し、それを使用してURLを生成するだけです。

var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var url = urlHelper.Action("CaptionCategory", new { id = caption.Code });

または、特定のケースでは、次のようにハードコーディングする代わりに、htmlヘルパーを使用してアンカーを生成します。

sb.AppendLine("<li>");
sb.AppendLine(
    helper.ActionLink(
        caption, 
        "CaptionCategory", 
        new { id = caption.Code }
    ).ToHtmlString()
);
sb.AppendLine("</li>");

これを機能させるには、拡張メソッドをスコープに含めるusing System.Web.Mvc.Html;ために、ファイルの先頭に追加する必要があります。ActionLink

于 2011-09-04T14:24:20.650 に答える