Asp.net mvc 显示不同类型的MVCContrib网格条件列

Asp.net mvc 显示不同类型的MVCContrib网格条件列,asp.net-mvc,asp.net-mvc-2,mvccontrib-grid,Asp.net Mvc,Asp.net Mvc 2,Mvccontrib Grid,我知道如何使用Html.ActionLink在MVCContrib网格列上显示链接,但我想做的是基于字段的值,如果字段的值为false,则显示文本,如果为true,则显示链接 它不会让我做这样的事情: column.For(x => x.HasValue == false ? x.Name : Html.ActionLink(x.Name, "MyMethod", "MyController") “无法将lambda表达式转换为类型‘string’,因为

我知道如何使用Html.ActionLink在MVCContrib网格列上显示链接,但我想做的是基于字段的值,如果字段的值为false,则显示文本,如果为true,则显示链接

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

column.For(x => x.HasValue == false ? 
                x.Name : Html.ActionLink(x.Name, "MyMethod", "MyController")
“无法将lambda表达式转换为类型‘string’,因为它不是委托类型”

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


提前感谢。

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

并在
MyPartial.ascx
内部执行测试


在ASP.NET MVC 3中,这已被弃用,取而代之的是自定义列(
columns.custom(…)
)。

什么类型是
x.Name
,上面的代码缺少右括号,这是问题的一部分吗?@PhilipFourie x.Name是字符串。缺少的括号不是问题的一部分,我只是忘了粘贴它。我使用类似的东西使它工作起来:@PhilipFourie column.For(x=>x.HasAttachment?string.Format(@“”),ResolveUrl(“~/MyApp/MyController/MyMethod/”)):x.Name)不知何故,系统不允许我使用column.For(“Name”),我必须使用column.For(item=>item.HasValue)。另外,在使用类似于您的示例的内容时,我不断收到错误消息“CS1525:Invalid expression term')”。为了使其正常工作,我最终使用了如下内容:column.For(x=>x.HasAttachment?string.Format(@“”),ResolveUrl(“~/MyApp/MyController/MyMethod/”=x.Name)):x.Name)
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");