0

このカスタム Html ヘルパーを作成しました。

public static MvcHtmlString Image(this HtmlHelper _helper, string _url, string _altText, object _htmlAttributes)
{
    TagBuilder builder = new TagBuilder("image");

    var path = _url.Split('?');

    string pathExtra = "";

    if (path.Length > 1)
    {
        pathExtra += "?" + path[1];
    }

    builder.Attributes.Add("src", VirtualPathUtility.ToAbsolute(path[0]) + pathExtra);
    builder.Attributes.Add("alt", _altText);
    builder.MergeAttributes(new RouteValueDictionary(_htmlAttributes));
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
}

私は絶妙にうまく機能します。正直なところ、これは私の仕事ではありませんが、stackoverflow でヘルプを参照しているときに見つけました。

そうは言っても、このメソッドを変換して、画像をロードし、クリック可能な画像であるハイパーリンクとして機能する方法があるのではないかと思いましたか?

4

1 に答える 1

2

これを試してください。画像をアンカータグにラップするだけです。画像の場合と同様に、MergeAttribute メソッドを使用して適切な href 値を追加してください。

public static MvcHtmlString Image(this HtmlHelper _helper, string _url, string _altText, object _htmlAttributes)
{
    TagBuilder builder = new TagBuilder("image");
    TagBuilder anchorabBuilder = new TagBuilder("a"); 

    var path = _url.Split('?');

    string pathExtra = "";

    if (path.Length > 1)
    {
        pathExtra += "?" + path[1];
    }

    builder.Attributes.Add("src", VirtualPathUtility.ToAbsolute(path[0]) + pathExtra);
    builder.Attributes.Add("alt", _altText);
    builder.MergeAttributes(new RouteValueDictionary(_htmlAttributes));
    anchorabBuilder.InnerHtml = builder.ToString(TagRenderMode.SelfClosing);
    return MvcHtmlString.Create(anchorabBuilder.ToString(TagRenderMode.Normal));
}
于 2013-05-03T13:24:23.523 に答える