在ASP.NET MVC的图像周围制作一个Html.ActionLink?

我怎样才能做类似于Html.ActionLink()的东西,除了把生成的链接放在图片周围,而不是只是将链接吐出?

剃刀(查看引擎):

<a href="@Url.Action("ActionName", "ControllerName")"> <img src="@Url.Content("~/Content/img/imgname.jpg")" /> </a> 

ASPX(View Engine):

 <a href="<%= Url.Action("ActionName", "ControllerName") %>"> <img src="<%= Url.Content("~/Content/img/imgname.jpg") %>" /> </a> 

显然,如果你不止一次这样做,请给它写个帮手。 并填写img / a的其他属性。 但这应该给你一个总的想法。

尝试这样的事情:

 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); } 

希望这可以帮助

@Craig Stuntz给出的第一个答案是绝对完美的,但是我关心的是如果你有Ajax.ActionLink而不是Html.ActionLink你会怎么做。 在这里我将解释两种方法的简单解决scheme。 您可以为Html.ActonLink执行以下操作:

 @Html.Raw(@Html.ActionLink("[replacetext]", "Index", "Home").ToHtmlString().Replace("[replacetext]", "<img src=\"/Contents/img/logo.png\" ... />")) 

同样的概念可以应用于Ajax.ActionLink

 @Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/Contents/img/logo.png\" … />")) 

所以这对你来说很简单

编辑:

带有样式表或类名称的ActionLink图像

与样式表

 @Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/assets/img/logo.png\" style=\"width:10%\" ... />")) 

用类名

 <style> .imgClass { width:20% } 
 @Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/assets/img/logo.png\" class=\"imgClass\" ... />")) 

欲了解更多关于ActionLink的相关信息,请访问Asp.net MVC中的Image,

更容易…

改变你的代码:

 <p class="site-title">@Html.ActionLink(" ", "Index", "Home", new { style = "background: url('" + Url.Content("~http://img.dovov.comlogo.png") + "') no-repeat center right; display:block; height:50px;width:50px;" })</p> 

你可以使用url.content:

 @Url.Content("~http://img.dovov.comimg/slide.png") 

这个返回相对path

你可以创buildhtmlhelper,它可以返回图像与链接…作为参数,你会传递给htmlhelper的值,如图像path和链接,并在htmlhelper中,您将使用StringBuilder格式的HTML链接的图像正确…

干杯