Формат WebGrid ничего не выводит

У меня есть таблица, которую я построил с помощью цикла foreach в MVC 4 (Razor), и я пытаюсь преобразовать ее в 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>

ИЗМЕНИТЬ2

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

работает, конечно, но не дает мне возможности предоставить DisplayTemplate.

ИЗМЕНИТЬ3

Похоже, (item as ChangeStateViewModel).ChangeId дает мне NULL.. но почему? Это ценно, если я просто использую @item.ChangeId.

ИЗМЕНИТЬ4

Похоже, что предоставленный элемент по умолчанию (когда вы используете @<text>...</text>) является System.Web.Helpers.WebGridRow, поэтому EDIT3 обеспечивает такое поведение. Что-то вроде приведенного ниже будет работать, но только если вы отправите его в DisplayTemplate; по какой-то причине он не будет отображаться, если вы удалите эту часть , "DisplayAny".

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

Однако это делает EDIT2 довольно запутанным.


person zimdanen    schedule 06.03.2013    source источник


Ответы (1)


Это работает, поэтому я останавливаюсь здесь и отмечаю это как ответ. Однако, если есть лучшие способы приблизиться к этому, я хотел бы их услышать.

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

Требуется DisplayTemplate; в противном случае это не будет отображаться.

person zimdanen    schedule 07.03.2013