为什么DataAnnotations不能在公共字段上运行?例如:
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中测试的。
答案 0 :(得分:2)
DataAnnotations不能使用字段的原因是因为用于检索属性的反射式机制(TypeDescriptor
)仅支持属性。
虽然这并不容易,但如果有足够的需求,我们可以考虑使用字段进行此工作。