2014-03-06 51 views
1
@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Title) 
     </td> 
    </tr> 
... 

我發現過去對這個問題的回答有衝突的回答。據我所知,左參數modelItem是一個未使用的參數。但是這個問題的接受答案MVC HTML Helpers and Lambda Expressions表示左邊的參數用於「描述」item.Title的值。那麼它被使用還是未被使用?ASP.NET MVC 5中表達式樹的優點是什麼@ Html.DisplayFor

modelItem的預期類型是IEnumerable,item.Title是一個字符串。我只是看不出如何描述其他。然而,如果modelItem沒有描述item.Title,那麼首先使用lambda表達式樹的目的是什麼?

回答

0

modelItem的預期類型是IEnumerable,item.Title是一個字符串。

不正確。在強類型視圖中使用的HtmlHelper實例使用分配了@model指令的模型。在for循環中僅使用Html.xxxFor不會更改xxxFor輔助方法調用中的TModel通用參數。

您會注意到輔助方法是HtmlHelper類的擴展方法。因此,無論你決定將方法的使用嵌套在...中,所推斷的類型將是封閉視圖的類型。

+0

分配給@model的模型是IEnumerable 因此,繼續DisplayFor也期待IEnumerable allenylzhou

0

我正在準備Julie Lerman的Programming Entity Framework DbContext,它說第一個參數是名稱,第二個參數是值。這樣,在更復雜的查詢中,您將回顧該名稱,而不僅僅使用該值。

相關問題