Что делает атрибут EnumDataType в ASP.NET MVC?

я использую string свойства некоторых объектов моей модели для представления перечислений. Я использую только строки, потому что в коде Entity Framework еще нет поддержки перечисления. Во всяком случае, я заметил, что в System.ComponentModel.DataAnnotations под названием EnumDataType. Я попытался установить этот атрибут, но он, похоже, ни на что не влияет.

Я должен упомянуть, что моя конечная цель-иметь соответствующий раскрывающийся список для любого типа перечисления в представлении "создать" или "редактировать". Я думал может быть!--2--> облегчило бы это в сценарии авто-лесов, но я не уверен, что это так.

три вопроса:

  1. тут EnumDataType имейте цель внутри ASP.NET MVC?
  2. если да, то что он делает?
  3. мне нужно, чтобы мои свойства модели были int (вместо string) воспользоваться EnumDataType?

4 ответов


EnumDataType в настоящее время поддерживается только ASP.NET сайты динамических данных (в .NET 4.0). Обычно вы можете создать свой собственный HTML-помощник, который будет проверять свойство, содержит ли оно атрибут (по отражению) и создает для него раскрывающийся список со значениями из связанного перечисления.


лучшим решением, которое я нашел для этого, было объединение этот блог С ответ. Это делает и представление и модель очень читабельными и ремонтопригодными.

посмотреть мои ответ тут.

модель:

public enum YesPartialNoEnum
{
    [Description("Yes definitely")]
    Yes,
    [Description("No way!")]
    No
}

//........

[Display(Name = "The label for my dropdown list")]
public virtual Nullable<YesPartialNoEnum> CuriousQuestion{ get; set; }

//........

вид:

@Html.ValidationMessageFor(model => model.CuriousQuestion)

MVC 3 не имеет никакой логики для обработки EnumDataTypeAttribute.


либо MVC3, либо EF4.1 CodeFirst появляется для проверки свойств с помощью этого атрибута. Удобно из-за отсутствия поддержки перечисления в EF в настоящее время, то есть вы можете поместить атрибут в целочисленное свойство.