我有以下看法...DisplayNameFor&EditorFor在同樣的觀點
@model IEnumerable<Contact>
@{ ViewBag.Title = "Contact Manager"; }
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.MiddleName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.HomePhone)
</th>
<th>
@Html.DisplayNameFor(model => model.WorkPhone)
</th>
<th>
@Html.DisplayNameFor(model => model.MobilePhone)
</th>
<th>
@Html.DisplayNameFor(model => model.EMail)
</th>
<th></th>
</tr>
@*This first row is the search form*@
<tr>
<th>
@Html.EditorFor(model => model.FirstName)
</th>
<th>
@Html.EditorFor(model => model.MiddleName)
</th>
<th>
@Html.EditorFor(model => model.LastName)
</th>
<th>
@Html.EditorFor(model => model.HomePhone)
</th>
<th>
@Html.EditorFor(model => model.WorkPhone)
</th>
<th>
@Html.EditorFor(model => model.MobilePhone)
</th>
<th>
@Html.EditorFor(model => model.EMail)
</th>
<th></th>
</tr>
</table>
的問題是,在謂詞參數傳遞給「EditorFor()」調用「模式」參數,指的是IEnumerable和而不是單個聯繫人項目在「DisplayNameFor()」方法中似乎的方式。因此,我收到編譯錯誤,因爲屬性名稱(例如:「FirstName」)不是IEnumerable的屬性。
Intellisense實際上向函數的謂詞參數中使用的「method」參數返回了各種IEnumerable方法(如「Select()」)。奇怪的是,即使「DisplayNameFor()」方法調用似乎可行,intellisense也不會顯示聯繫人的屬性。
這裏有什麼區別?
說實話,它是有道理的,因爲模型是IEnumerable這個語法不起作用。然而,我很困惑,爲什麼它會爲您在生成強類型視圖作爲列表時由嚮導插入的「DisplayNameFor()」方法起作用。然後在這種情況下,爲什麼它會爲一個(DisplayNameFor())...而不是其他(EditorFor())。
謝謝 摹
我猜這是一個重複的問題 - 查看解答[這裏] [1] [1]:http://stackoverflow.com/questions/4947854/how-to-get-the-column-titles-from-the-displayname-dataannotation-for-a-strong – CodeMonkeyKing 2013-04-28 22:27:11