Sha*_*ean 29 asp.net-mvc asp.net-mvc-2
我有一个textareamvc.当输入数据并将其显示给用户时,如何显示换行符?
我这样显示:
<%= Model.Description%>
Run Code Online (Sandbox Code Playgroud)
Cod*_*odo 51
以下类实现了正确编码文本的HtmlHelper:
public static class HtmlExtensions
{
public static MvcHtmlString Nl2Br(this HtmlHelper htmlHelper, string text)
{
if (string.IsNullOrEmpty(text))
return MvcHtmlString.Create(text);
else
{
StringBuilder builder = new StringBuilder();
string[] lines = text.Split('\n');
for (int i = 0; i < lines.Length; i++)
{
if (i > 0)
builder.Append("<br/>\n");
builder.Append(HttpUtility.HtmlEncode(lines[i]));
}
return MvcHtmlString.Create(builder.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在您的视图中很容易使用:
<%= Html.Nl2Br(Model.MultilineText) %>
Run Code Online (Sandbox Code Playgroud)
或者用剃刀:
@Html.Nl2Br(Model.MultilineText)
Run Code Online (Sandbox Code Playgroud)
mka*_*aja 20
对于稍微不同(以及恕我直言,更好,更安全)解决问题的方法,请参阅类似问题的答案.
基本上,不是将所有新行字符转换为<br>元素的麻烦,而是将以下CSS应用于显示输入文本的元素:
white-space: pre-line
Run Code Online (Sandbox Code Playgroud)
在视图中将其显示回来时,您应始终对用户输入的文本进行编码,以确保其安全.
你可以像Cybernate建议的那样做,也可以将它添加到HtmlHelper扩展方法中
public static string EncodedMultiLineText(this HtmlHelper helper, string text) {
if (String.IsNullOrEmpty(text)) {
return String.Empty;
}
return Regex.Replace(helper.Encode(text), Environment.NewLine, "<br/>")
}
Run Code Online (Sandbox Code Playgroud)
这样它就可以在你的视图中轻松重用
<%= Html.EncodedMultiLineText(Model.Description) %>
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情:
<%=
Regex.Replace(
Html.Encode(Model.Description),
Environment.NewLine,
"<br/>",
RegexOptions.IgnoreCase||RegexOptions.Multiline
)
%>
Run Code Online (Sandbox Code Playgroud)
对于 Asp.net mvc razor,我使用 Html.Encode 来阻止 xss 攻击
@Html.Raw(Html.Encode(Model.Description).Replace(Environment.NewLine, "<br />"))
Run Code Online (Sandbox Code Playgroud)
上面提供静态HTML帮助扩展的答案提供了一个过时的构造函数:
return new MvcHtmlString(builder.ToString());
Run Code Online (Sandbox Code Playgroud)
此行可以由以下代码行替换:
return MvcHtmlString.Create((builder.ToString()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48131 次 |
| 最近记录: |