Применяя принцип DRY к решению Омара, вот расширение HTML Helper:
using System.Web.Mvc;
using System.Text.RegularExpressions;
namespace System.Web.Mvc.Html {
public static class MyHtmlHelpers {
public static MvcHtmlString EncodedReplace(this HtmlHelper helper, string input, string pattern, string replacement) {
return new MvcHtmlString(Regex.Replace(helper.Encode(input), pattern, replacement));
}
}
}
Использование (с улучшенным регулярным выражением):
@Html.EncodedReplace(Model.CommentText, "[\n\r]+", "<br />")
Это также имеет дополнительное преимущество, заключающееся в том, что разработчик Razor View будет нести большую ответственность за обеспечение безопасности от уязвимостей XSS.
Меня беспокоит решение Джейкоба, что рендеринг разрывов строк с помощью CSS нарушает семантику HTML .
\n
в базе данных, и вы хотите преобразовать в<br />
?