Sha*_*ica 49 razor asp.net-mvc-3
令人尴尬的新手问题:
string
我的模型中有一个包含换行符的字段.
@Html.DisplayFor(x => x.MultiLineText)
Run Code Online (Sandbox Code Playgroud)
不显示换行符.
很显然,我可以做的模型的一些摆弄,并创建另一个字段替换\n
用<br/>
,但似乎缺憾.什么是教科书使这项工作的方式?
cwi*_*lls 77
一个HtmlHelper扩展方法,用于显示带换行符的字符串值:
public static MvcHtmlString DisplayWithBreaksFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var model = html.Encode(metadata.Model).Replace("\r\n", "<br />\r\n");
if (String.IsNullOrEmpty(model))
return MvcHtmlString.Empty;
return MvcHtmlString.Create(model);
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下语法:
@Html.DisplayWithBreaksFor(m => m.MultiLineField)
Run Code Online (Sandbox Code Playgroud)
Cht*_*lek 54
我建议用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
sla*_*ote 44
在您看来,您可以尝试类似的东西
@Html.Raw(Html.Encode(Model.MultiLineText).Replace("\n", "<br />"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43477 次 |
最近记录: |