您可以编写一个自定义的 ActionLink 扩展方法,它不会像标准助手那样对文本进行 HTML 编码:
public static MvcHtmlString UnencodedActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName
)
{
var str = UrlHelper.GenerateUrl(null, actionName, null, null, null, null, new RouteValueDictionary(), htmlHelper.RouteCollection, htmlHelper.ViewContext.RequestContext, true);
var a = new TagBuilder("a")
{
InnerHtml = !string.IsNullOrEmpty(linkText) ? linkText : string.Empty
};
a.MergeAttribute("href", str);
return MvcHtmlString.Create(a.ToString(TagRenderMode.Normal));
}
接着:
<%= Html.UnencodedActionLink(linkText.Highlight(word), action) %>
甚至更好:
public static MvcHtmlString HighlightedActionLink(
this HtmlHelper htmlHelper,
string linkText,
string word,
string actionName
)
{
var str = UrlHelper.GenerateUrl(null, actionName, null, null, null, null, new RouteValueDictionary(), htmlHelper.RouteCollection, htmlHelper.ViewContext.RequestContext, true);
var a = new TagBuilder("a")
{
InnerHtml = !string.IsNullOrEmpty(linkText) ? linkText.Highlight(word) : string.Empty
};
a.MergeAttribute("href", str);
return MvcHtmlString.Create(a.ToString(TagRenderMode.Normal));
}
接着:
<%= Html.HighlightedActionLink(linkText, word, action) %>