我想學習C#和MVC3。我想有一列的WebGrid作爲Html.Action鏈接,但是,它不會工作,直到我這樣做:「(item)=>」做什麼?
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.Id }))
所以我知道這個修復它,但爲什麼呢? (項目)看起來像一個演員,但是=>是什麼?從閱讀其他問題我發現,出於某種原因這樣做顯然不好 - 爲什麼?
我想學習C#和MVC3。我想有一列的WebGrid作爲Html.Action鏈接,但是,它不會工作,直到我這樣做:「(item)=>」做什麼?
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.Id }))
所以我知道這個修復它,但爲什麼呢? (項目)看起來像一個演員,但是=>是什麼?從閱讀其他問題我發現,出於某種原因這樣做顯然不好 - 爲什麼?
這被稱爲C#中的lambda表達式/匿名函數。 ()
部分是參數列表,=>
指示右側是拉姆達的主體/表達式。
這裏有一個稍微展開的形式可以是有點清晰
Func<ItemType, string> linkFunction = (item) =>
{
return Html.ActionLink("Edit", "Edit", new { id = item.Id });
};
我認爲你可以放棄「/匿名功能」。我認爲只是lambda表達式更正確。 –
@ justin.m.chase匿名函數更具包容性,因爲它涵蓋了lambda表達式和匿名方法 – JaredPar
這將是一個lambda expression。不,使用拉姆達不壞,這是一件(非常)好事。
@安德魯,爲什麼過分熱心編輯? – RichK
@RichK:我提出了答案,但刪除了「MSDN是你的朋友」,因爲它給優秀的答案增加了一種居高臨下的語氣。 –
啊,看起來我可能已經用我原來的編輯跺出克勞斯的額外句子了。對不起,:) :) –
這是不壞的使用lambda表達式。 – driis
這樣做不錯。 – recursive
謝謝你們。 [這個]的答案(http://stackoverflow.com/questions/6167903/using-data-in-a-html-actionlink-inside-a-webgrid-column-not-possible)問題是我擔心的。 – BenGC