Это продолжение моего предыдущего вопроса: Как вы отображаете области на значках с кнопками?
Я решил создать собственное расширение HtmlHelper
, чтобы создатьссылка ActionImage
, поэтому я разобрал некоторые популярные расширения, размещенные на SO, и получил следующее:
// 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 Sprite, и я не знаю, какзаставить его работать с методом расширения ActionImage
:
@Html.ActionImage("Account", "LogOn", null, Sprite.Image("~/App_Sprites/twitterlogin.png"), "", null)
Я попытался вызвать метод ToString()
спрайта, но он не возвращает URL.Есть ли другой способ сделать это?