1

我的视图有问题,当我使用TextAreaFor任何换行符或格式编辑内容时,我插入的内容被保存,当我编辑相同的元素时,它仍然会显示如下:

这个冬天需要一些东西来让家人开心吗?还是在寻找完美的圣诞礼物?您会在 CD WOW 找到这两种产品!

通过此优惠,会员可以:

• 搜索大量音乐、电影、电视、书籍和游戏。

• 在圣诞节期间将最新版本直接送到您家门口,全球免费送货。

但是当我使用DisplayFor或只是@Model.Property它会显示如下:

这个冬天需要一些东西来让家人开心吗?还是在寻找完美的圣诞礼物?您会在 CD WOW 找到这两种产品!通过此优惠,会员可以: • 搜索大量音乐、电影、电视、书籍和游戏。• 在圣诞节期间将最新版本直接送到您家门口,全球免费送货。

我应该使用什么来以显示的格式显示它TextAreaFor

4

3 回答 3

4

您可以使用<pre>标签:

<pre>
    @Html.DisplayFor(x => x.Property)
</pre>

另一种可能性是编写一个自定义助手,将新行 ( \r\n)替换为<br/>标签并像这样使用它:

@Html.DislpayFormattedFor(x => x.Property)

以下是自定义助手的定义方式:

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);
    }
}
于 2012-05-25T09:38:09.490 回答
1

只是禁用该字段?这样你就可以使用现有的TextAreaFor

@Html.TextAreaFor(m => m.Property, new { disabled = "disabled" })
于 2012-05-25T09:46:29.290 回答
0

使用 <pre> 标签或将此 css 属性添加到您的 div/span 标签:

white-space: pre-wrap;

例子 :

<div style="white-space: pre-wrap;">
  my
  multiline
  text
</div>
于 2013-06-24T10:56:30.640 回答