2013-01-18 28 views
0

在ASP.NET MVC Razor視圖詳細信息頁面,我可以有像模特:IEnumerable特別在剃刀?

@model MyClass

然後像做:

@html.DisplayNameFor(m => m.MyProperty)

但在列表頁,其中我有:

@model IEnumerable<MyClass>

相同的@html代碼工作。我不希望它,因爲MyProperty不是IEnumerable的屬性。 IEnumerable是否「特殊」,因爲剃鬚刀視圖引擎知道查看類型參數MyClass的屬性,而不是IEnumerable本身的屬性?

+0

In [DisplayNameFor](http://msdn.microsoft.com/en-us/library/hh833706.aspx),我沒有看到IEnumerable ..(注意超載) – 2013-01-18 03:35:30

+0

(所以不,它不是這隻會是太古怪了。) – 2013-01-18 03:37:20

回答

1

IEnumerable並不特別。如果您要使用@ html.DisplayFor(m => m.MyProperty),您將得到一個錯誤,即您的IEnumerable列表不包含「MyProperty」的定義。您將不得不使用linq查詢來選擇一個MyClass對象,或者在模型上執行ForEach()。

@ html.DisplayNameFor IS特別之處在於它對IEnumerable模型有一個重載。它知道你真的只是在屬性的顯示名稱後面,因爲你有一個強類型列表,它知道如何找到顯示名稱。這是一個方便的功能!