DataType vs UiHint
Я использую mvc2 какое-то время, и когда мне нужно установить шаблон, я использую атрибут DataType
[DataType("DropDown")]
public int Field { get; set; }
Я вижу, что другие используют UiHint для достижения тех же результатов
[UiHint("DropDown")]
public int Field { get; set; }
В чем разница между использованием этих двух атрибутов? Какой атрибут я должен использовать, или они предназначены для разных задач?
Ответы
Ответ 1
DataType обычно используется, чтобы сообщить, что это очень конкретная версия свойства, например цена.
Наиболее распространенным примером DataType является [DataType(DataTypes.EmailAddress)]
, который обычно является строкой, но мы говорим, что это очень специфический тип строки.
Они оба полезны, и UIHint переопределяет DataType. Поэтому, если у вас есть определенный тип данных, но вы хотите переопределить редактор для этого конкретного свойства, вы можете использовать UIHint.
Ответ 2
Атрибут DataType имеет две цели
Предоставление дополнительной информации о типе для поля данных. Вы делаете это, применяя атрибут DataTypeAttribute к полю данных в модели данных и указывая дополнительное имя типа из перечисления DataType. Затем механизм просмотра использует шаблон по умолчанию для отображения свойства, например, флажок для булева.
Если вы хотите переопределить шаблон по умолчанию и хотите использовать настраиваемый шаблон, его можно использовать для связывания настраиваемого шаблона поля с этим полем данных. В этом случае вы должны предоставить частичную страницу [.cshtml, MVC 4] для описания отображения.
Цель UIHint точно такая же, как и вторая точка выше.
Где использовать что? Ответ: контекст, то есть, что будет иметь больше смысла, что ближе к физической проблеме, которую ваш код пытается решить.
Что делать, если оба применяются к одному и тому же свойству? Ответ: UIHint имеет приоритет, очевидно. Но почему вы применили оба?