2012-01-26 2 views
0

에서 ActionImage을 만드는 방법이있는까지 내 앞의 질문에 다음과 같습니다 How do you map areas on icon set to buttons?CSS의 스프 라이트

은 내가 ActionImage 링크를 생성하기 위해 내 자신의 HtmlHelper 확장하기로 결정, 그래서 인기의 일부를 잠식 확장 SO에 게시하고있어이 :

,396 :

// Controller/Action Image Link 
public static MvcHtmlString ActionImage(this HtmlHelper html, 
    string controller, string action, object routeValues, 
    string imageSrc, string alternateText, object imageAttributes) 
{ 
    UrlHelper url = new UrlHelper(html.ViewContext.RequestContext); 

    // build the <img> tag 
    TagBuilder imgBuilder = new TagBuilder("img"); 
    imgBuilder.MergeAttribute("src", url.Content(imageSrc)); 
    imgBuilder.MergeAttribute("alternateText", alternateText); 
    string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing); 

    // build the <a> tag 
    TagBuilder anchorBuilder = new TagBuilder("a"); 
    anchorBuilder.MergeAttribute("href", url.Action(action, controller, routeValues)); 
    anchorBuilder.InnerHtml = imgHtml; // include the <img> tag inside 
    string anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal); 

    return MvcHtmlString.Create(anchorHtml); 
} 

자, 문제는 내가 가진 CSS 스프라이트를 가지고 있고 나는 그것이 ActionImage 확장 메서드와 함께 작동하는 방법을 모르는 것입니다

ToString() 메서드를 호출하려고 시도했지만 URL을 반환하지 않습니다. 이 일을 가능하게하는 또 다른 방법이 있습니까?

@Html.ActionImage(
    "Account", 
    "LogOn", 
    null, 
    "~/App_Sprites/twitterlogin.png", 
    "", 
    null 
) 

을 한 후 도우미가 Sprite.Image 도우미를 사용하여 이미지를 생성 돌봐 있습니다 :

답변

2

당신은 스프라이트에 불과 경로를 통과 할 수 그것을했다

public static MvcHtmlString ActionImage(this HtmlHelper html, 
    string controller, string action, object routeValues, 
    string imageSrc, string alternateText, object imageAttributes) 
{ 
    UrlHelper url = new UrlHelper(html.ViewContext.RequestContext); 

    // build the <img> tag 
    string img = Sprite.Image(imageSrc).ToHtmlString(); 

    // build the <a> tag 
    TagBuilder anchorBuilder = new TagBuilder("a"); 
    anchorBuilder.MergeAttribute("href", url.Action(action, controller, routeValues)); 
    anchorBuilder.InnerHtml = imgHtml; // include the <img> tag inside 
    string anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal); 

    return MvcHtmlString.Create(anchorHtml); 
} 
+0

을! Mersi :) – Kiril

관련 문제