Получение Html.ActionLink для генерации многострочной ссылки - PullRequest
2 голосов
/ 29 июля 2011

Для приложения, над которым я работаю, заголовки изображений должны занимать несколько строк. Играя вокруг, я смог получить желаемый эффект от этой разметки:

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

сделал это для меня:

Stack
Перелив

Однако мне не удалось найти правильный способ создания описания ссылки для HTML.ActionLink, который будет отображать этот вид вывода.

1 Ответ

3 голосов
/ 29 июля 2011

Если URL-адреса не являются частью вашего веб-сайта, использование помощника 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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...