2012-02-29 2 views
3

Я читаю об этом на MSDN, и на самом деле это не очень много описывает. В нем говорится, что он используется для указания типа данных для связи с столбцом данных или параметром. Имеет смысл. Означает ли это, что я должен использовать его во всех своих свойствах? Я предполагаю, что нет. Итак, почему существует DataType.Text, кажется довольно бесполезным, когда у вас есть свойство в виде строки.Тип данных DataAnnotation

Я нашел для него использование многострочного текста в качестве типа данных для создания текстового поля на стороне клиента, а не только одного элемента ввода текста в одной строке. Но как это соотносится с столбцом данных или параметром?

Я также предполагал, что он также будет проверять его, поскольку я использовал DataType.Url, но он просматривает, введен или нет URL-адрес. То же самое с DataType.Email. Есть ли что-то, что я делаю неправильно, или мне нужно использовать RegEx вместо этого?

+0

Вы хотите использовать RegEx для чего? – gideon

ответ

7

Смотрите мою статью MSDN DataType Enumeration Это НЕ атрибуты проверки. Из статьи MSDN:

Атрибут по DataTypeAttribute позволяет пометить поля, используя тип , который является более конкретным, чем собственных типов баз данных. Например, строковое поле данных, содержащее адреса электронной почты, можно отнести к с типом EmailAddress. К этой информации можно обращаться с помощью шаблонов полей и изменять способ обработки поля данных. (То есть, создать ссылку)

+0

Хорошо, я почему-то думал, что они могут подтвердить. Я понимаю, что вы имеете в виду сейчас с ссылкой на адрес электронной почты для отображения и еще чего-то, имеет смысл. Спасибо, что поняли это. –

+1

Кажется, что теперь они являются атрибутами проверки. В MVC 4 по крайней мере DataTypeAttribute происходит из ValidationAttribute. – fejesjoco

0

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

ВИДЕТЬ Члены DataType Enumeration

Что это?

Когда вы комментируете свои классы и используете их в качестве моделей в своем приложении MVC. asp.net-MVC будет заботиться о проверке (даже на клиенте с JavaScript, если у вас есть все на месте)

Посмотреть этот учебник для примера: http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-6

4

Атрибут DataType в контексте ASP.NET MVC является более или менее намек на то, что вид шаблона использовать для рендеринга отображения и редактора для этого свойства. Как вы заметили, он предоставляет перечисление поддерживаемых типов данных, для которых ASP.NET MVC внутренне предоставляет редактор и шаблоны отображения (MultilineText -> textarea html input), но также может принимать строковый параметр с именем пользовательского типа. Все, что он делает, - это поиск с таким именем (предварительно определенным или нет) в Views/ControllerName/EditorTemplates/{DataTypeName}.cshtml или Views/ControllerName/DisplayTemplates/{DataTypeName}.cshtml, когда вы используете редактор/редактор для отображения или отображения/отображения соответственно (он также будет искать в Views/Shared/...). Если он не подходит, он использует встроенный, если он доступен.

Эффект применения атрибута DataType в значительной степени совпадает с атрибутом UIHint, но он немного более явный. Например, я бы использовал DataType.Currency по цене и пользовательский интерфейс UIHint на пользовательском слайдере ui.

Что касается проверки - встроенные шаблоны предоставляют его, но если вы должны использовать собственный тип данных в своем настраиваемом шаблоне отображения/редактора, вам придется предоставить это самостоятельно.

0

DataTypeAttribute ничего не проверяют, несмотря на наследование от ValidationAttribute. Он переопределяет метод IsValid(), но просто возвращает true.

Если вы хотите, чтобы подтвердить свой Email или Url поля используйте EmailAttribute или UrlAttribute вместо этого. Они наследуются от DataTypeAttribute и переопределяют метод IsValid() соответствующим образом.

Это весь список конкретных ТипДанных атрибутов:

  • CreditCardAttribute
  • EmailAddressAttribute
  • EnumDataTypeAttribute
  • FileExtensionsAttribute
  • PhoneAttribute
  • UrlAttribute
Смежные вопросы