【问题标题】:WebGrid format not outputting anythingWebGrid 格式不输出任何内容
【发布时间】:2013-03-06 17:03:15
【问题描述】:

我有一个在 MVC 4 (Razor) 中使用 foreach 循环构建的表,我正在尝试将其转换为 WebGrid 以利用排序。目前,我只是想让format 参数为我工作,以便我可以根据需要重新创建列。这是一个我无法开始工作的简单示例:

grid.Column(
    columnName: "ChangeId",
    format: (item) => @Html.DisplayFor(m => (item as ChangeStateViewModel).ChangeId)
)

这在渲染过程中不输出任何内容:

<td></td>

我做错了什么?我试过删除(item) =&gt; 并使用&lt;text&gt;...&lt;/text&gt;,但这也没有显示我的价值。

编辑

如果我将其更改为以下内容,如 here 所述,它确实显示项目中的所有属性;然而,从那里开始建设只会让我回到原来的位置。

format: @<text>@Html.DisplayFor(x => item)</text>

EDIT2

format: @<text>@item.ChangeId</text>

当然可以,但我无法提供 DisplayTemplate。

EDIT3

看起来(item as ChangeStateViewModel).ChangeId 给了我NULL.. 但为什么呢?如果我只使用@item.ChangeId,它就很有价值。

EDIT4

看起来提供的默认项(当您使用 @&lt;text&gt;...&lt;/text&gt; 时)是 System.Web.Helpers.WebGridRow,这就是 EDIT3 提供它所做的行为的原因。像下面这样的东西会起作用,但前提是你将它发送到 DisplayTemplate;出于某种原因,如果您删除了 , "DisplayAny" 部分,它将不会显示。

format: @<text>@Html.DisplayFor(x => (item as WebGridRow)["ChangeId"], "DisplayAny")</text>

这确实让 EDIT2 相当混乱。

【问题讨论】:

    标签: razor asp.net-mvc-4 webgrid


    【解决方案1】:

    这行得通,所以我在这里停下来并将其标记为答案。但是,如果有更好的方法来解决这个问题,我很想听听。

    format: @<text>@Html.DisplayFor(x => (item as WebGridRow)["ChangeId"], "DisplayAny")</text>
    

    DisplayTemplate 是必需的;否则不会显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2014-05-17
      • 2016-12-06
      相关资源
      最近更新 更多