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はかなり混乱します。