ASP.NET MVC:如何显示多行文本
本文关键字:显示 文本 MVC NET 何显示 ASP | 更新日期: 2023-09-27 18:09:20
视图模型:
public class Note
{
[DataType(DataType.MultilineText)]
public string Text { get; set; }
}
默认编辑器模板呈现一个保留换行符的<textarea>
元素。
默认显示模板将文本呈现为删除换行符的单个字符串。
我试过了,但不起作用:
~/Views/Shared/EditorTemplates/MultilineText.cshtml
@model string
@Html.Raw(Model.Replace(System.Environment.NewLine, "<br />"))
我可以做一些愚蠢的事情,比如@Html.Raw(Model.Replace("e", "<br />"))
,它会起作用,但当然我只想替换换行符<br />
元素!我也尝试过使用@"'n"
,但也不起作用。
有什么想法吗?
谢谢!
答案是你不会做这些。这就是样式表的工作。基本上,以任何您想要的方式将内容呈现为<p>
,例如,并使用CSS来控制如何保留空白。例如:
(在您的样式标签或CSS中(
p.poem {
white-space:pre;
}
(在HTML标记中(
<p class="poem">
There is a place where the sidewalk ends
And before the street begins,
And there the grass grows soft and white,
And there the sun burns crimson bright,
And there the moon-bird rests from his flight
To cool in the peppermint wind.
</p>
你可以试试这个:
@Html.Raw("<pre>"+ Html.Encode(Model) + "</pre>");
这将保留您的内容并按原样显示。
我建议使用css格式化输出,而不是使用消耗服务器端的字符串操作,如.replace
只需添加此样式属性即可呈现多行文本:
.multiline
{
white-space: pre-line;
}
然后
<div class="multiline">
my
multiline
text
</div>
换行符将呈现为br元素。
尝试@Html.Raw(Model.Replace("'r'n", "<br />"))
<pre>@myMultiLineString</pre>
或
<span style="white-space:pre">@myMultiLineString</span>
无需执行Html.Encode,因为它是在默认情况下完成的
[DataType(DataType.MultilineText)]
public your_property {set; get;}
如果您使用EditorFor()