我在代码中有一个生成字符串A\nB\nC
的函数,当它被拉入我的Webgrid时,我使用Razor端的函数将\n
更改为<br />
,我知道这是有效的,因为在网页源中,它在三个单独的行上显示字符串。
@functions {
public static string ReplaceLineBreaks(string s) {
return s.Replace(Environment.NewLine, "@Html.Raw(<br />)");
}
}
<div id="grid_MyWebGrid">
@grid.GetHtml(
tableStyle : "table",
alternatingRowStyle : "alternate",
headerStyle : "header",
columns: grid.Columns(
grid.Column("Letters", format: item =>
@Html.Raw(ReplaceLineBreaks(Html.Encode(item.Letters)))),
)
)
</div>
但是当我加载页面时,该列的单元格显示:
ABC
而不是:
A
B
C
WebGrid中是否有某些内容可以告诉您该列是否用作多行单元格?
答案 0 :(得分:1)
我找到了一个名为@helper
的东西,您可以用它来设计Razor内联模板。
使用@helper
,我写了一个foreach
语句,为每个字符串创建spans
。
@helper DisplayMultiLine(string str) {
foreach(string s in str.Split(new char[] {'\n'})) {
@s <br />
}
}
<div id="grid_searchentities">
@grid.GetHtml(
tableStyle : "table",
alternatingRowStyle : "alternate",
headerStyle : "header",
columns: grid.Columns(
grid.Column("Letters",
format:@<text>@DisplayMultiLine(@item.Letters)</text>),
)
)
</div>