2010-11-29 43 views
3

爲什麼DataAnnotations不能在公共領域使用?例如:公共領域的數據註解與MVC中的屬性

namespace Models 
{ 
    public class Product 
    { 
     [Display(Name = "Name")] 
     public string Title; // { get; set; } 
    } 
} 

public ActionResult Test() 
{ 
    return View(new Models.Product() { Title = "why no love?" }); 
} 

@Html.LabelFor(m => m.Title) // will return 'Title' if field, or 'Name' if property 
@Html.DisplayFor(m => m.Title) 

如果Title是一個字段,那麼Display屬性似乎沒有效果。如果標題更改爲屬性,則按預期顯示「名稱」。

在這個例子中,看起來很簡單,只是改變一個屬性,但我試圖使用F#中的類型,他們被編譯成一個類,而不是屬性的類。

這在ASP.NET 4和MVC RC 3

回答

2

的原因進行了測試,爲什麼DataAnnotations不下地幹活是因爲用於檢索的屬性(TypeDescriptor)反射般的機制只支持屬性。

雖然這不容易,但如果有足夠的需求,我們可以考慮使用字段進行此項工作。

+0

MVC中的JSON序列化程序返回字段和屬性,不知道爲什麼字段對註釋的處理方式不同。 – yanta 2010-11-30 20:08:28