4

我正在尝试以多行显示客户地址,该地址适用于@Html.EditorFor 但不适用于@Html.DisplayFor。我在这里尝试过其他帖子,但没有得到它的工作。这是开始的内容以及我没有运气的尝试

@Html.DisplayFor(model => model.CustomerPostalAddress)
@Html.Raw(Html.Encode(Model.CustomerPostalAddress).Replace("\n","<br/>"))

这是模型中的字段

 [DataType(DataType.MultilineText)]
 public string CustomerPostalAddress { get; set; }

任何帮助将非常感激

4

3 回答 3

6

只需添加此 css 样式属性即可呈现多行文本,这比使用 .replace 之类的服务器端字符串操作的 cpu 更好:

.multiline
{
   white-space: pre-wrap;
}

然后

<div class="multiline">
  my multiline
  text
</div>

这将呈现像br元素一样的换行符。

在这里试试:https ://snippet.run/xaf4

于 2013-06-24T10:38:52.947 回答
6

您可能想在 Views/Shared/DisplayTemplates/DisplayPostalAddr.cshtml 中创建一个 DisplayTemplate

@model string

<p>@Model</p>

然后给你模型一个关于如何显示它的提示

[DataType(DataType.MultilineText)]
[UIHint("DisplayPostalAddr")]
public string CustomerPostalAddress { get; set; }
于 2012-11-08T21:23:07.183 回答
1

正如在make DisplayFor 显示换行符中提到的,我覆盖(引入?)一个默认的 DisplayTemplate for DataType.MultilineText/Views/Shared/DisplayTemplates/MultilineText.cshtml只包含这一行:

<span style="white-space: pre-wrap">@this.Model</span>

我猜这个模板是自动解析的,因为我不需要UIHint或任何其他参考或注册。(当然你也可以引入一个 CSS 类,或者在视图中替换换行符,如果你愿意的话。)

使用默认的 DisplayTemplate 将修复所有用 (type-safe,meaning) 注释的属性的换行符[DataType(DataType.MultilineText)],而不仅仅是用 注释的属性UIHint("DisplayPostalAddr")

于 2019-12-09T13:28:50.377 回答