Html.ActionLink只支持文字链接,现在我们利用C#的扩展方法写一个Html.ActionLinkWithImage()让其支持图片链接的功能。一、首先新建一个静态类,将命名空间在改在System.Web.Mvc下,代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace System.Web.Mvc
{
public static class MyHelpler
{
public static MvcHtmlString 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 new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
}
public static MvcHtmlString ActionLinkWithImage(
this HtmlHelper html,
string imgSrc,
string actionName,
string controllerName,
object routeValue=
null)
{
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, controllerName, routeValue);
TagBuilder tagBuilder =
new TagBuilder(
"a")
{
InnerHtml =
img
};
tagBuilder.MergeAttribute("href", url);
return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
}
}
}
二、在view下使用:
@Html.ActionLinkWithImage(Url.Content("~/Content/images/index_1.gif"), "Index")
@Html.ActionLinkWithImage(Url.Content("~/Content/images/index_2.gif"), "List","Admin", new { id=1})