Html.RouteLink() HtmlHelper は、テキスト リンクに最適です。しかし、画像をリンクする最良の方法は何ですか?
33301 次
8 に答える
34
<a href="<%=Url.RouteUrl(...)%>"><img src="..." alt="..." /></a>
于 2009-03-23T21:34:53.867 に答える
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();
}
于 2009-08-04T12:41:55.893 に答える
15
これは、上記のMiniScalopeの回答から入手した更新版です。VS2010 と ASP.Net MVC 2 Preview を使用しています
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();
}
于 2010-01-25T03:48:55.737 に答える
9
<%= Html.ActionLink(Html.Image(imageUrl, imageAlt), actionName, controllerName) %>
機能する可能性があります。画像の拡張子は先物アセンブリからのものです。または、独自の拡張機能を作成します。
于 2009-03-23T21:40:30.497 に答える
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);
}
于 2009-03-23T21:36:15.577 に答える
5
コメントを追加するのに十分なSOSwaggerがありませんが、これは 上記のMiniScalopeのコメントに対するコメントです。
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
再利用するために、これをHtmlHelper拡張メソッド自体にする(そして単純化する)ことをお勧めします。
private static UrlHelper Url(this HtmlHelper helper)
{
return new UrlHelper(helper.ViewContext.RequestContext);
}
于 2009-10-22T15:43:15.367 に答える
3
<%= Html.RouteLink("PLACEHOLDER", ...).Replace("PLACEHOLDER", "<img src=""..."" alt=""..."" />")%>
于 2009-03-23T21:41:09.340 に答える
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());
}
于 2013-06-24T23:37:10.877 に答える