2013-05-03 53 views
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)); 
} 

我的作品精美的罰款。我必須誠實地說,這不是我的工作,但是我在瀏覽幫助時找到了它。

這就是說,我想知道它有任何方法來轉換這種方法,使它既加載圖像和作爲超鏈接,可點擊圖像?

回答

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)); 
} 
+0

啊,好的!我可以使用字符串作爲鏈接來做到這一點,因爲我可能希望它在我的應用程序的其他地方引導? – hsim 2013-05-03 13:28:19

+0

而且我不能編寫'return anchorabBuilder.Create(builder.ToString(TagRenderMode.Normal));'因爲沒有創建符號的方法,所以在anchorabBuilder tagbuilder – hsim 2013-05-03 13:31:18

+0

請檢查更新代碼 – 2013-05-04 07:15:08