如何在MVC 4中制作@ Html.DisplayFor多线

Wil*_*lNZ 4 asp.net-mvc visual-studio-2010 razor

我试图在多行中显示一个客户地址,该地址适用于@ Html.EditorFor但不适用于@ Html.DisplayFor.我在这里尝试过其他帖子,但还没有开始工作.以下是我已经开始的事情以及我没有运气的尝试

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

这是模型中的字段

 [DataType(DataType.MultilineText)]
 public string CustomerPostalAddress { get; set; }
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激

kev*_*itz 5

您可能希望在Views/Shared/DisplayTemplates/DisplayPostalAddr.cshtml中创建DisplayTemplate

@model string

<p>@Model</p>
Run Code Online (Sandbox Code Playgroud)

然后给你模型提示如何显示它

[DataType(DataType.MultilineText)]
[UIHint("DisplayPostalAddr")]
public string CustomerPostalAddress { get; set; }
Run Code Online (Sandbox Code Playgroud)


Cht*_*lek 5

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

.multiline
{
   white-space: pre-wrap;
}
Run Code Online (Sandbox Code Playgroud)

然后

<div class="multiline">
  my multiline
  text
</div>
Run Code Online (Sandbox Code Playgroud)

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

在这里试试:http://refork.com/xaf4

  • 不幸的是,这确实意味着你需要小心你正在使用的空格作为格式......它将div和"我的多线"之间的换行也作为换行符. (3认同)