2009-03-23 11 views

उत्तर

24

यहाँ मेरा, इसका मुख्य कार्य कुछ भार के

public static string ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object routeValues, object htmlAttributes, object imgHtmlAttributes) 
    { 
     UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url; 
     string imgtag = htmlHelper.Image(imgSrc, alt,imgHtmlAttributes); 
     string url = urlHelper.Action(actionName, controllerName, routeValues); 



     TagBuilder imglink = new TagBuilder("a"); 
     imglink.MergeAttribute("href", url); 
     imglink.InnerHtml =imgtag; 
     imglink.MergeAttributes(new RouteValueDictionary(htmlAttributes), true); 

     return imglink.ToString(); 

    } 
+1

क्या यह स्ट्रिंग के बजाय HtmlString नहीं होना चाहिए? वापसी के साथ नया एचटीएमएलस्ट्रिंग (imglink.ToString()); ? – Stacker

+4

बस यह इंगित करने के लिए कि HTMLHelper.Image() अब MVC4 में नहीं है। –

+0

htmlHelper.Image घोषित नहीं कर सकता() – kasim

34
<a href="<%=Url.RouteUrl(...)%>"><img src="..." alt="..." /></a> 
+0

इस रूप में +1 उपयोग कर रहा हूँ सबसे तेजी से विधि मैं इतने सारे से बाहर का इस्तेमाल किया जाता है जवाब यहाँ। मैंने अभी इस विधि में कार्रवाई और नियंत्रक निर्दिष्ट किया है और यह ठीक काम करता है। – nccsbim071

7

अपना स्वयं का सहायक विस्तार बनाएं।

public static string Image(this HtmlHelper helper, string src, string alt) 
{ 
    TagBuilder tb = new TagBuilder("img"); 
    tb.Attributes.Add("src", helper.Encode(src)); 
    tb.Attributes.Add("alt", helper.Encode(alt)); 
    return tb.ToString(TagRenderMode.SelfClosing); 
} 
+0

हालांकि यह एक छवि कार्रवाई लिंक नहीं बनाता है। क्या जैक क्या मांग रहा है? –

+0

भले ही यह सीधे प्रश्न का उत्तर न दे, मैं वास्तव में एक छवि टैग सहायक विस्तार बनाने के लिए इस विधि को पसंद करता हूं। धन्यवाद :) –

9
<%= Html.ActionLink(Html.Image(imageUrl, imageAlt), actionName, controllerName) %> 

काम कर सकता था, छवि विस्तार वायदा विधानसभा से है। या अपना खुद का विस्तार करें।

+0

कोई टैग सूप नहीं। अच्छा लगा। –

+0

काम नहीं लग रहा है। एचटीएमएल.एक्शनलिंक() विधि एचटीएमएल एन्कोड को पहले तर्क में प्रकट करती है ताकि सभी कोण ब्रैकेट इत्यादि बच जाए। – macon

3
<%= Html.RouteLink("PLACEHOLDER", ...).Replace("PLACEHOLDER", "<img src=""..."" alt=""..."" />")%> 
+1

इस के लिए बदसूरत स्ट्रिंग मैनिपुलेशन का एक गुच्छा की आवश्यकता है। –

5

मैं एक टिप्पणी जोड़ने के लिए पर्याप्त इतना अकड़ की जरूरत नहीं है, लेकिन इस MiniScalope's comment above पर एक टिप्पणी है:

UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;

मैं सु होगा ggest अपने आप में यह एक HtmlHelper विस्तार विधि बनाने (और यह आसान बनाने), पुनः उपयोग के लिए:

private static UrlHelper Url(this HtmlHelper helper) 
{ 
    return new UrlHelper(helper.ViewContext.RequestContext); 
} 
15

यह एक अद्यतन संस्करण मैं ऊपर MiniScalope जवाब से होता है। मैं VS2010 और ASP.Net MVC 2 पूर्वावलोकन

 public static string ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object routeValues, object htmlAttributes, object imgHtmlAttributes) 
    { 
     UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url; 
     TagBuilder imgTag = new TagBuilder("img"); 
     imgTag.MergeAttribute("src", imgSrc); 
     imgTag.MergeAttributes((IDictionary<string, string>) imgHtmlAttributes,true); 
     string url = urlHelper.Action(actionName, controllerName, routeValues); 



     TagBuilder imglink = new TagBuilder("a"); 
     imglink.MergeAttribute("href", url); 
     imglink.InnerHtml = imgTag.ToString(); 
     imglink.MergeAttributes((IDictionary<string, string>)htmlAttributes, true); 

     return imglink.ToString(); 

    } 
2

इस कोड mvc4 पर परीक्षण किया गया ...

public static MvcHtmlString ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object routeValues, object htmlAttributes, object imgHtmlAttributes) 
    { 
     UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url; 
     var imgTag = new TagBuilder("img"); 
     imgTag.MergeAttribute("src", imgSrc); 
     imgTag.MergeAttributes((IDictionary<string, string>)imgHtmlAttributes, true); 
     string url = urlHelper.Action(actionName, controllerName, routeValues); 



     var imglink = new TagBuilder("a"); 
     imglink.MergeAttribute("href", url); 
     imglink.InnerHtml = imgTag.ToString(); 
     imglink.MergeAttributes((IDictionary<string, string>)htmlAttributes, true); 

     return MvcHtmlString.Create(imglink.ToString()); 

    }