Comment puis-je faire quelque chose de similaire à Html.ActionLink() à l'exception de la place, le lien généré autour d'une Image au lieu de simplement cracher le lien?
Réponses
Trop de publicités?Rasoir (Moteur D'Affichage):
<a href="@Url.Action("ActionName", "ControllerName")">
<img src="@Url.Content("~/Content/img/imgname.jpg")" />
</a>
ASPX (Moteur d'Affichage):
<a href="<%= Url.Action("ActionName", "ControllerName") %>">
<img src="<%= Url.Content("~/Content/img/imgname.jpg") %>" />
</a>
Évidemment, si vous faites cela, plus d'une fois, écrire à quelqu'un pour elle. Et remplissez les autres attributs de l'img/un. Mais cela devrait vous donner l'idée générale.
Essayez quelque chose comme ceci:
public static string ActionLinkWithImage(this HtmlHelper html, string imgSrc, string actionName)
{
var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
string imgUrl = urlHelper.Content(imgSrc);
TagBuilder imgTagBuilder = new TagBuilder("img");
imgTagBuilder.MergeAttribute("src", imgUrl);
string img = imgTagBuilder.ToString(TagRenderMode.SelfClosing);
string url = UrlHelper.Action(actionName);
TagBuilder tagBuilder = new TagBuilder("a") {
InnerHtml = img
};
tagBuilder.MergeAttribute("href", url);
return tagBuilder.ToString(TagRenderMode.Normal);
}
Espérons que cette aide
La première réponse donnée par @Craig Stuntz est absolument parfait, mais ma préoccupation est de savoir si ce sera à toi de le faire si vous avez Ajax.ActionLink
au lieu de Html.ActionLink
. Ici, je vais expliquer à des solutions de facilité pour les deux méthodes. Vous pouvez le faire comme suit pour Html.ActonLink
:
@Html.Raw(@Html.ActionLink("[replacetext]", "Index", "Home").ToHtmlString().Replace("[replacetext]", "<img src=\"/Contents/img/logo.png\" ... />"))
même concept peut être appliqué pour Ajax.ActionLink
@Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/Contents/img/logo.png\" … />"))
donc, ce sera facile pour vous.