DataType vs UiHint - PullRequest
       4

DataType vs UiHint

16 голосов
/ 22 сентября 2010

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

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

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

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

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

Ответы [ 2 ]

23 голосов
/ 22 сентября 2010

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

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

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

2 голосов
/ 27 марта 2013

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

Предоставление дополнительной информации о типе для поля данных.Это делается путем применения атрибута DataTypeAttribute к полю данных в модели данных и путем указания имени дополнительного типа из перечисления DataType.Затем механизм просмотра использует шаблон по умолчанию для отображения свойства, например, флажок для логического значения. Если вы хотите переопределить шаблон по умолчанию и хотите использовать пользовательский шаблон, его можно использовать длясвяжите шаблон пользовательского поля с этим полем данных.В этом случае вы должны предоставить частичную страницу [.cshtml, MVC 4] для описания отображения.

Назначение UIHint точно такое же, как во втором пункте выше.Где использовать что?Ответ таков: контекст, т. Е. Что будет иметь больше смысла, что ближе к физической проблеме, которую пытается решить ваш код.Что делать, если оба применяются к одному и тому же свойству?Ответ: UIHint имеет приоритет, очевидно.Но почему вы примените оба?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...