Как добавить символ NEW LINE в строковую часть ActionLink? - PullRequest
7 голосов
/ 07 августа 2009

Я создаю Ajax.ActionLink в C #, который начинается:

<%= Ajax.ActionLink("f lastname", ...more stuff

и я бы хотел, чтобы между словами "f" и "фамилия" был символ новой строки. Как я могу сделать это? Я думал, что специальный символ был \ n, но это не работает, и <br> тоже не работает.

Ответы [ 9 ]

3 голосов
/ 07 августа 2009

Возможно, вам придется вернуться к выполнению чего-то вроде:

<a href="<%= Url.Action("action") %>">f<br />last</a>

А затем подключите биты Ajax вручную.

1 голос
/ 07 августа 2009

Попробуйте это:

<%= Ajax.ActionLink("f<br />lastname", ...more stuff
0 голосов
/ 23 декабря 2016

Прошло несколько лет с тех пор, как вопрос был задан, но у меня были проблемы с ним. Я нашел ответ (в MVC):

Текст в вашем ActionLink: ... ActionLink ("TextLine1" + Environment.Newline + "TextLine2", ...

В ActionLink есть класс, который указывает на CSS с этой строкой:

Пробел: предварительно;

Вот и все. Я видел ответы, в которых они помещали всю Actionline в теги

, но это вызывало больше проблем, чем решало. 
0 голосов
/ 28 января 2013

Я думаю, что ответ Эндрю Хара правильный. Если у вас есть несколько более сложные требования, у вас есть возможность создать свой собственный AjaxHelper или HtmlHelper. Это будет включать создание пользовательских методов расширения, которые работают с AjaxHelper и HtmlHelpers, выполнив что-то вроде:

public static class CustomHtmlHelperExtensions
{
    public static MvcHtmlString FormattedActionLink(this HtmlHelper html, ...)
    {
        var tagBuilder = new TagBuilder("a");

        // TODO : Implementation here

        // this syntax might not be exact but you get the jist of it!
        return MvcHtmlString.Create(tagBuilder.ToString());
    }
}

Вы можете использовать dotPeek или ваш любимый инструмент отражения .NET, чтобы изучить стандартные расширения, которые поставляются с ASP.NET MVC (например, ActionLink) и т. Д., Чтобы выяснить, как Microsoft реализовала большинство этих методов расширения. У них есть довольно хорошие шаблоны для их написания. В прошлом я использовал этот подход, чтобы упростить вывод HTML в удобочитаемом виде, например, для интеграции с Google Maps или Bing Maps, для создания таких опций, как ActionImage, например, @Html.ActionImage(...), или для интеграции вывода HTML с форматированием текстиля с помощью включающий синтаксис, такой как @Html.Textile("textile formatted string").

Если вы определите это в отдельной сборке (как я), то не забудьте включить это в ссылки на ваш проект, а затем добавьте его и в файл Web.config проекта.

Очевидно, что этот подход излишний для ваших конкретных целей, и по этой причине я голосую за подход Эндрю Хэра для вашего конкретного случая.

0 голосов
/ 10 октября 2011

Это работает для меня -

<%= HttpUtility.HtmlDecode(Html.ActionLink("AOT &lt;br/> Claim #", "actionName" ))%>
0 голосов
/ 03 декабря 2009

Как насчет:

<%= Server.UrlDecode(Ajax.ActionLink(Server.UrlEncode("f<br/>lastname"), ...more stuff
0 голосов
/ 07 августа 2009

Вы пробовали комбинацию \ r \ n?

0 голосов
/ 07 августа 2009

\n раньше работал на меня. Но теперь, кажется, в ущерб. В качестве альтернативы вы можете использовать метод NewLine, например:

string jay = "This is a" + Environment.NewLine + "multiline" + Environment.NewLine + "statement";
0 голосов
/ 07 августа 2009

Вы не можете использовать <br />, потому что метод ActionLink (и я верю, что все методы расширения html и ajax) кодируют строку. Таким образом, на выходе будет что-то вроде

<a href="...">f&lt;br /&gt;lastname</a>

Вместо этого вы можете попробовать форматирование:

<%= string.Format(Ajax.ActionLink("f{0}lastname", ...more stuff), "<br />") %>
...