MVCContrib Grid Условная колонка, показывающая различные типы - PullRequest
2 голосов
/ 20 февраля 2012

Я знаю, как показать ссылку на столбец таблицы MVCContrib с помощью Html.ActionLink, но я хочу основываться на значении поля, где, если поле имеет значение = false, тогда показывать текст это правда, тогда показать ссылку.

Это не позволит мне сделать что-то вроде этого:

column.For(x => x.HasValue == false ? 
                x.Name : Html.ActionLink(x.Name, "MyMethod", "MyController")

"не удалось преобразовать лямбда-выражение в тип 'string', так как это не тип делегата"

Это позволяет мне использовать Html.Raw для обоих условий, но когда я запускаю приложение, я получаю одно и то же сообщение об ошибке

Заранее спасибо.

1 Ответ

1 голос
/ 20 февраля 2012

В 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(...)).

...