html - 获取 Html.ActionLink 生成多行链接

标签 html asp.net-mvc markup

对于我正在开发的应用程序,我需要让图像标题跨越多行。通过尝试,我能够从此标记中获得所需的效果:

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

为我渲染了这个:

Stack
Overflow

但是,我一直无法找到正确的方法来生成 HTML.ActionLink 的链接描述,以呈现此类输出。

最佳答案

如果网址不是您网站的一部分,那么使用 HTML 帮助程序生成此链接不会带来太多值(value)。相反,只需按原样编写即可。如果它是您网站的一部分,并且您可以使用路由来到达地址,您可以编写一个自定义 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
)

关于html - 获取 Html.ActionLink 生成多行链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6868736/

相关文章:

markup - ReStructuredText 编号的标题

javascript - 如何防止我的超链接刷新页面?

javascript - 无法在 JavaScript 中显示来自 Base64 字符串的图像

javascript - 使用 JavaScript 和 JQuery,如何维护动态更新的 HTML 选择元素的选定状态?

c# - 仅在ASP.NET MVC页面上显示从数据库进行数据相减操作的结果

javascript - knockout.js 信号 r getall 不起作用

javascript循环数组中的项目

jquery - 我们如何使用 data-inline ="true"作为按钮类型?

javascript - 用于更改类型的输入的 Webshim

javascript - Angularjs - ng-route 在 IE9 上不工作 - 不显示 View