edi*_*ode 2 c# asp.net-mvc razor asp.net-mvc-3
我的视图有一个问题,因为当我使用TextAreaFor任何换行符或格式编辑某些内容时,我插入的内容都会被保存,并且当我编辑相同的元素时,它仍然会显示如下:
\n\n今年冬天需要一些东西让家人开心吗?或者正在寻找完美的圣诞礼物?你\xe2\x80\x99都可以在CD中找到,哇!
\n通过此优惠,会员可以:
\n\xe2\x80\xa2 搜索大量音乐、电影、电视、书籍和游戏。
\n\xe2\x80\xa2 圣诞节期间将最新版本直接送到您家门口,全球免运费。
\n
但是当我使用DisplayForor just时@Model.Property,它会显示如下:
\n\n今年冬天需要一些东西让家人开心吗?或者正在寻找完美的圣诞礼物?你\xe2\x80\x99都可以在CD中找到,哇!通过此优惠,会员可以: \xe2\x80\xa2 搜索大量音乐、电影、电视、书籍和游戏。\xe2\x80\xa2 圣诞节期间将最新版本直接送到您家门口,全球免运费。
\n
我应该使用什么来以所示的格式显示它TextAreaFor?
您可以使用<pre>标签:
<pre>
@Html.DisplayFor(x => x.Property)
</pre>
Run Code Online (Sandbox Code Playgroud)
另一种可能性是编写一个自定义助手,它将\r\n用标签替换新行 ( )<br/>并像这样使用它:
@Html.DislpayFormattedFor(x => x.Property)
Run Code Online (Sandbox Code Playgroud)
以下是定义自定义助手的方法:
public static class HtmlExtensions
{
public static IHtmlString DislpayFormattedFor<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, string>> expression
)
{
var value = Convert.ToString(
ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).Model
);
if (string.IsNullOrEmpty(value))
{
return MvcHtmlString.Empty;
}
value = string.Join(
"<br/>",
value.Split(
new[] { Environment.NewLine },
StringSplitOptions.None
).Select(HttpUtility.HtmlEncode)
);
return new HtmlString(value);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4215 次 |
| 最近记录: |