2

我知道如何使用 Html.ActionLink 在 MVCContrib Grid 列上显示链接,但我想要做的是基于字段的值,如果该字段的值 = false 则显示文本,如果它有 true然后显示一个链接。

它不会让我做这样的事情:

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

“无法将 lambda 表达式转换为类型‘字符串’,因为它不是委托类型”

它让我可以在这两种情况下使用 Html.Raw,但是当我运行应用程序时,我会收到相同的错误消息

提前致谢。

4

1 回答 1

1

在 ASP.NET MVC 2 中,您可以使用Action Syntax

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

于 2012-02-20T07:09:58.700 回答