2013-03-06 4 views
0

У меня есть таблица, которую я построил с использованием цикла foreach в MVC 4 (Razor), и я пытаюсь преобразовать его в WebGrid, чтобы воспользоваться сортировкой. В настоящее время я просто пытаюсь заставить параметр format работать для меня, чтобы я мог воссоздать столбцы по мере необходимости. Вот простой пример, который я не могу заставить работать:Формат WebGrid не выводит ничего

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

Это не выводит ничего во время рендеринга:

<td></td> 

Что я делаю неправильно? Я попытался удалить (item) => и использовать <text>...</text>, но это тоже не отображает мою ценность.

РЕДАКТИРОВАТЬ

Если изменить его к следующему, как упомянуто here, он делает отображения всех свойств в элементе; однако, здание оттуда просто вертело меня туда, где я был.

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>) является System.Web.Helpers.WebGridRow, поэтому EDIT3 обеспечивает поведение, которое он делает. Что-то вроде ниже будет работать, но только если вы отправите его в DisplayTemplate; по какой-то причине он не будет отображаться, если вы удалите эту часть , "DisplayAny".

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

Это делает EDIT2 довольно запутанным, хотя.

ответ

0

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

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

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