我试图在多行中显示一个客户地址,该地址适用于@ 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; }
非常感谢任何帮助
答案 0 :(得分:5)
你想在Views / Shared / DisplayTemplates / DisplayPostalAddr.cshtml中创建一个DisplayTemplate
@model string
<p>@Model</p>
然后给你模型提示如何显示它
[DataType(DataType.MultilineText)]
[UIHint("DisplayPostalAddr")]
public string CustomerPostalAddress { get; set; }
答案 1 :(得分:5)
只需添加此css样式属性即可呈现多行文本,这比使用服务器端字符串操作的cpu更好,例如.replace:
.multiline
{
white-space: pre-wrap;
}
然后
<div class="multiline">
my multiline
text
</div>
这将呈现 br 元素之类的换行符。
在此处尝试:http://refork.com/xaf4
答案 2 :(得分:0)
如make DisplayFor display line breaks中所述,我为<td>USD {{amount| number: '1.2-2'}} </td>
,DataType.MultilineText
覆盖(引入了)默认的DisplayTemplate,仅包含以下行:
/Views/Shared/DisplayTemplates/Multiline.cshtml
我猜想该模板会自动解析,因为我不需要<span style="white-space: pre-wrap">@this.Model</span>
或任何其他参考或注册。
(当然,如果愿意,您也可以引入一个CSS类,或在视图内部替换换行符。)
使用默认的DisplayTemplate将修复 all 属性的换行符,这些属性用(类型安全,有意义的)UIHint
注释,而不只是用[DataType(DataType.MultilineText)]
注释的属性