用于网格列格式的Razor多线语法

时间:2013-05-16 15:22:27

标签: c# asp.net-mvc razor webgrid razor-2

我想要在MVC4剃刀视图中定义WebGrid。我想使用多行来定义列格式以提高可读性。以下工作,格式在一行:

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column(
            header: "Address",
            format: (item) => @: @item.Address.Street1 @item.Address.Street2<br />@item.Address.City, @item.Address.State @item.Address.Zip
            )
        )
    )

以下内容在第一个尾部括号上显示解析器错误; expected,在其他尾随括号上显示Invalid expression term ')'

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column(
            header: "Address",
            format: (item) => @: @item.Address.Street1 @item.Address.Street2<br />
                              @: @item.Address.City, @item.Address.State @item.Address.Zip
            )
        )
    )

阅读ScottGu's blog后,我认为这是正确的多行语法。我尝试了大括号,分号和括号的各种放置,但我找不到使解析器满意的语法。

2 个答案:

答案 0 :(得分:0)

经过一段时间的玩弄后,我能够找到使用<text>标签的工作版本。

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column(
            header: "Address",
            format: @<text>@item.Address.Street1 @item.Address.Street2<br />
                           @item.Address.City, @item.Address.State @item.Address.Zip</text>
                )))

答案 1 :(得分:0)

也许它与多行lambda有关。

这样的事情:

@grid.GetHtml(
columns: grid.Columns(
    grid.Column(
        header: "Address",
        format: (item) => 
                        {
                          @: @item.Address.Street1 @item.Address.Street2<br />
                          @: @item.Address.City, @item.Address.State @item.Address.Zip
                        }
        )
    )
)