0

我制作了这个自定义的 Html Helper:

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 回答