Тип данных против UiHint

Я уже давно использую mvc2, и когда мне нужно установить шаблон, я использую атрибут DataType.

    [DataType("DropDown")]
    public int Field { get; set; }

Я вижу, как другие используют UiHint для достижения тех же результатов.

    [UiHint("DropDown")]
    public int Field { get; set; }

В чем разница между использованием этих двух атрибутов? Какой атрибут я обычно должен использовать или они предназначены для разных задач?


person Andrey    schedule 22.09.2010    source источник


Ответы (2)


DataType обычно используется, чтобы сообщить, что это очень конкретная версия свойства, например цена.

Наиболее распространенным примером DataType является [DataType(DataTypes.EmailAddress)], который обычно представляет собой строку, но мы говорим, что это очень специфический тип строки.

Они оба полезны, и UIHint переопределяет DataType. Поэтому, если у вас есть определенный тип данных, но вы хотите переопределить редактор для этого конкретного свойства, вы можете использовать UIHint.

person Buildstarted    schedule 22.09.2010
comment
Кроме того, атрибуты UIHint задают свойство TemplateHint объекта ModelMetadata, тогда как атрибут DataType задает свойство DataTypeName того же объекта. - person Junior; 13.08.2018

Атрибут DataType имеет две цели

  • Укажите дополнительную информацию о типе поля данных. Это делается путем применения атрибута DataTypeAttribute к полю данных в модели данных и указания имени дополнительного типа из перечисления DataType. Затем механизм представления использует шаблон по умолчанию для отображения свойства, например, флажок для логического значения.
  • Если вы хотите переопределить шаблон по умолчанию и хотите использовать настраиваемый шаблон, его можно использовать для связывания настраиваемого шаблона поля с этим полем данных. В этом случае вы должны предоставить частичную страницу [.cshtml, MVC 4] для описания отображения.
  • Цель UIHint точно такая же, как и во втором пункте выше. Где что использовать? Ответ таков: контекст, то есть то, что будет иметь больше смысла, что ближе к физической проблеме, которую пытается решить ваш код. Что, если оба применяются к одному и тому же свойству? Ответ таков: очевидно, что UIHint имеет приоритет. Но зачем применять оба?

    person Hoven    schedule 27.03.2013