2011-02-08 158 views
1

什麼是一個ActionLink的使用LAMBDA正確的方法是什麼?
我想這一點:LAMBDA在Html.ActionLink使用剃刀

@Html.ActionLink(item.PageName, "ContentPage", new { id = item.PageName }, new { @title = item.ToolTip, item.Selected == 1 ? "class=selected" : "" }) 

但得到一個錯誤出於某種原因,我無法弄清楚它的正確語法?
感謝

+0

你實際上並不在你的代碼有拉姆達的任何地方。你能否澄清你所看到的錯誤? – marcind 2011-02-08 17:51:20

回答

1

我不知道ActionLink的,但目前看來,在這一段代碼:

new { @title = item.ToolTip, item.Selected == 1 ? "class=selected" : "" } 

您聲明的anonimus類型,蒙山名爲「@title」第一場,但.. .. 第二?!?在這裏我們看到一個帶有三元運算符的表達式,但是它的返回值沒有分配給任何東西。 你有「item.Selected」前添加標識符和assignement操作:

new { @title = item.ToolTip, class = item.Selected == 1 ? "selected" : "" } 

如果類的值=「」是無效的,你可以嘗試可以把整個對象三元運算符,像這樣:

item.Selected == 1 ? new { @title = ... } : new { @title = ..., class = "selected" } 

但可能這是行不通的:三元運算符將無法確定結果類型(兩個anonimous類型有不同的簽名)。 唯一的另一種方法是先使用「var」類型首先實例化正確的anonimous對象,然後將其傳遞給metod。 在任何情況下,這裏都沒有lambda表達式。你應該用「annoimous types」而不是「lambda」來標記你的答案。

+0

感謝,到底少了什麼是「@」字課前 – idekkers 2011-02-10 08:32:45

0

你試過:

@Html.ActionLink(item.PageName,"ContentPage",new { id = item.PageName },new { @title = item.ToolTip, selected = (item.Selected == 1) ? "class=selected" : "" }) 

(你缺少HTML屬性名)。

這是新的匿名類型語法,而不是lambas,與您必須包裝一組額外的繞聲明括號的泛型類型的lambda表達式。