Данные Аннотации к публичным полям и свойствам в MVC - PullRequest
3 голосов
/ 29 ноября 2010

Почему аннотации данных не работают в открытых полях?Пример:

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)

Если заголовок является полем, то атрибут Display, похоже, не имеет никакого эффекта.Если заголовок изменен на свойство, он работает как положено, так как отображает «Имя».

Казалось бы, в этом примере просто изменить свойство, но я пытаюсь использовать типы из F #, гдеполучить скомпилированный в класс с полями, а не свойствами.

Это было проверено в ASP.NET 4 и MVC RC 3.

1 Ответ

2 голосов
/ 30 ноября 2010

Причина, по которой DataAnnotations не работают с полями, заключается в том, что механизм отражения, который используется для извлечения атрибутов (TypeDescriptor), поддерживает только свойства.изучите эту работу с полями, если есть достаточный спрос.

...