获取Html.ActionLink以生成多行链接

时间:2011-07-29 04:43:46

标签: html asp.net-mvc markup

对于我正在处理的应用程序,我需要让图像标题跨越多行。在我身边玩,我能够从这个标记中获得所需的效果:

<a href="http://www.stackoverflow.com">Stack<br>Overflow</a>

为我呈现了这个:

Stack
Overflow

但是我无法找到生成HTML.ActionLink链接描述的正确方法,它将呈现这种输出。

1 个答案:

答案 0 :(得分:3)

如果网址不是您网站的一部分,使用HTML帮助程序生成此链接不会带来太多价值。而是简单地按原样编写。如果它是您网站的一部分,并且您可以使用路由来到达地址,那么您可以编写一个自定义HTML帮助程序,默认情况下不会对链接文本进行HTML编码:

public static class HtmlExtensions
{
    public static MvcHtmlString MyActonLink(
        this HtmlHelper html, 
        string linkText, 
        string action, 
        string controller, 
        object routeValues, 
        object htmlAttributes
    )
    {
        var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
        var url = urlHelper.Action(action, controller, routeValues);
        var anchor = new TagBuilder("a");
        anchor.InnerHtml = linkText;
        anchor.Attributes["href"] = url;
        anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        return MvcHtmlString.Create(anchor.ToString());
    }
}

并在您看来:

@Html.MyActonLink(
    "Stack<br/>Overflow",    // linkText
    "MyAction",              // actionName
    "MyController",          // controllerName
    new { id = "123" },      // routeValues
    new { @class = "foo" }   // htmlAttributes
)