Отображение разрывов строки asp.net mvc бритва Я использую следующее, чтобы текст выводил разрывы строк, введенные в элемент <textarea> HTML. MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />")) Есть ли лучший способ сделать это? Ответ 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() Ответ 2 Там еще лучшее/удивительное решение, в котором используется свойство белого пробела CSS: Используя это, вы избегаете Уязвимости Cross-Site scripting (XSS)... <p style="white-space: pre-line">@Model.Message</p> Работает как шарм с движком ASP.NET MVC Razor. Ответ 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>")))
Ответ 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()
Ответ 2 Там еще лучшее/удивительное решение, в котором используется свойство белого пробела CSS: Используя это, вы избегаете Уязвимости Cross-Site scripting (XSS)... <p style="white-space: pre-line">@Model.Message</p> Работает как шарм с движком ASP.NET MVC Razor.
Ответ 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>")))