0

MVC 4 (Razor) で foreach ループを使用して作成したテーブルがあり、それを WebGrid に変換して並べ替えを利用しようとしています。format現在、必要に応じて列を再作成できるように、パラメーターを機能させようとしています。これは私が仕事に就けない簡単な例です:

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

これは、レンダリング中に何も出力しません:

<td></td>

私は何を間違っていますか?を削除(item) =>して使用しようとしまし<text>...</text>たが、それも私の値を表示しません。

編集

ここで説明したように、次のように変更すると、アイテムのすべてのプロパティが表示されます。ただし、そこから構築すると、元の場所に戻るだけです。

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

EDIT2

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

もちろん動作しますが、DisplayTemplate を提供することはできません。

EDIT3

(item as ChangeStateViewModel).ChangeIdそれは私に与えているように見えNULLます..しかし、なぜですか?使うだけなら重宝します@item.ChangeId

EDIT4

提供されるデフォルトの項目 ( を使用する場合@<text>...</text>) は であるように見えます。これが、 EDIT3がその動作を提供するSystem.Web.Helpers.WebGridRow理由です。以下のようなものは機能しますが、それを DisplayTemplate に送信した場合のみです。なぜか、その部分を外すと表示されなくなります。, "DisplayAny"

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

ただし、これによりEDIT2はかなり混乱します。

4

1 に答える 1

0

これはうまくいくので、ここでやめて、これを答えとしてマークします。ただし、これにアプローチするより良い方法がある場合は、ぜひ聞いてみたいと思います。

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

DisplayTemplate は必須です。それ以外の場合、これは表示されません。

于 2013-03-07T15:51:54.020 に答える