Условная колонка MVCContrib Grid, показывающая различные типы
Я знаю, как показать ссылку на столбец таблицы MVCContrib с помощью Html.ActionLink, но я хочу основываться на значении поля, где, если у поля есть значение = false, тогда показывать текст и если оно имеет значение true тогда покажи ссылку.
Это не позволит мне сделать что-то вроде этого:
column.For(x => x.HasValue == false ?
x.Name : Html.ActionLink(x.Name, "MyMethod", "MyController")
msgstr "не могу преобразовать лямбда-выражение в тип 'string', потому что это не тип делегата"
Это позволяет мне использовать Html.Raw для обоих условий, но когда я запускаю приложение, я получаю одно и то же сообщение об ошибке
Заранее спасибо.
1 ответ
В ASP.NET MVC 2 вы можете использовать синтаксис действия:
column.For("Name")
.Named("")
.Action(item => { %>
<td style="font-weight:bold">
<% if (item.HasValue) { %>
<%= Html.Encode(item.Name) %>
<% } else { %>
<%= Html.ActionLink(item.Name, "MyMethod", "MyController") %>
<% } %>
</td>
<% });
В качестве альтернативы вы также можете использовать частичное:
column
.For("Name")
.Named("")
.Partial("MyPartial");
и внутри MyPartial.ascx
выполнить тест.
В ASP.NET MVC 3 это не рекомендуется в пользу пользовательских столбцов (columns.Custom(...)
).