Подтвердить что ты не робот

Отображение разрывов строки asp.net mvc бритва

Я использую следующее, чтобы текст выводил разрывы строк, введенные в элемент <textarea> HTML.

MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))

Есть ли лучший способ сделать это?

4b9b3361

Ответ 1

Ваш код уязвим для атак XSS, поскольку HTML не кодирует текст. Я бы порекомендовал вам следующее:

var result = string.Join(
    "<br/>",
    Model.Post.Description
        .Split(new[] { Environment.NewLine }, StringSplitOptions.None)
        .Select(x => HttpUtility.HtmlEncode(x))
);
return MvcHtmlString.Create(result);

а затем, на ваш взгляд, вы можете безопасно:

@Html.SomeHelper()

Ответ 3

Возможно, вы можете вывести текст внутри <pre> тег.

Ответ 4

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

<p class="message">
@Html.Raw("<p>" + Model.Text + "</p>")
</p>

строка Model.Text, имеющая < br/" > внутри.

Ответ 5

Вот мое решение.

@MvcHtmlString.Create(Regex.Replace(Html.Encode(Model.Address), Environment.NewLine, "<br />", RegexOptions.Multiline))

и, конечно же, вам нужно будет добавить следующую инструкцию для работы Regex.

@using System.Text.RegularExpressions

Надеюсь, что это полезно для кого-то.

Ответ 6

Просто используйте тег. <pre>@Model.Post.Description</pre>

Или же

@Html.Raw(HttpUtility.HtmlDecode(Model.Post.Description.Replace("\r\n", "<br>")))