如何让MVC Webgrid在单元格中显示多行?

时间:2014-06-09 13:43:37

标签: c# model-view-controller webgrid

我在代码中有一个生成字符串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中是否有某些内容可以告诉您该列是否用作多行单元格?

1 个答案:

答案 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>