2012-02-20 57 views
2

我知道如何使用Html.ActionLink在MVCContrib Grid列上顯示鏈接,但我想要做的是基於字段的值,如果字段具有值= false然後顯示文本,如果它是真的,然後顯示一個鏈接。MVCContrib Grid Condtional列顯示不同類型

它不會讓我做這樣的事情:

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

「不能轉換lambda表達式到類型‘串’becasue它不是一個委託類型」

它讓我使用HTML。原始的兩個條件,但是當我運行應用程序,我得到相同的錯誤信息

在此先感謝。

+0

什麼類型是'x.Name'和上面的代碼有一個右括號缺失,是問題的一部分? – 2012-02-20 05:19:12

+0

@ PhilipFourie x.Name是一個字符串。缺少的括號不是問題的一部分,我只是忘了粘貼它。我得到它的工作,使用這樣的事情: – DaveEpp 2012-02-21 19:37:07

+0

@PhilipFourie column.For(x => x.HasAttachment?string.Format(@「{1}」,ResolveUrl(「〜/ MyApp/MyController/MyMethod /」)):x .Name) – DaveEpp 2012-02-21 19:37:31

回答

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

+0

不知何故,系統不會讓我使用colum.For(「Name」),我不得不使用column.For(item => item.HasValue)。另外,當使用類似於您的示例的東西時,我總是收到錯誤消息「CS1525:無效的表達式項」)。 (x => x.HasAttachment?string.Format(@「{1}」,ResolveUrl(「〜/ MyApp/MyController/MyMethod /」= x.Name))爲了使其工作,我最終使用了這樣的:column.For ):x.Name) – DaveEpp 2012-02-21 19:32:31