Asp.net mvc 显示不同类型的MVCContrib网格条件列
我知道如何使用Html.ActionLink在MVCContrib网格列上显示链接,但我想做的是基于字段的值,如果字段的值为false,则显示文本,如果为true,则显示链接 它不会让我做这样的事情: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’,因为
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");