Проверка модели электронной почты с помощью DataAnnotations и DataType
У меня есть следующая модель:
public class FormularModel
{
[Required]
public string Position { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
public string Webcode { get; set; }
}
Требуемая проверка достоверна. Но когда я пытаюсь использовать DataType, он не реагирует.
Вот мой код бритвы для элемента управления электронной почты:
@Html.TextBoxFor
(model => model.Email,
new { @style = "width: 175px;", @class = "txtField" }
) *
Итак, кто-нибудь знает ответ?
ТИА
Ответы
Ответ 1
Атрибут DataType
используется для форматирования, а не для проверки.
Я предлагаю вам использовать ASP.NET MVC 3 Futures для проверки подлинности электронной почты.
Пример кода:
[Required]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
Если вы используете .NET Framework 4.5
, теперь есть встроенный EmailAddressAttribute
, который живет в System.ComponentModel.DataAnnotations.EmailAddressAttribute
.
Ответ 2
Проект DataAnnotationsExtensions имеет атрибут Email которые вы можете использовать.
Ответ 3
Я посмотрел исходный код (обратный, спроектированный рефлектором), а варианты DataType
на самом деле даже не реализованы! (Это было для DateType.Date
)
Так что это не сработает.
Я лично использовал бы RegexValidation
для электронной почты.
Для ясности здесь приведена реализация IsValid
в классе DataTypeAttribute
:
public override bool IsValid(object value)
{
return true;
}
Ответ 4
Я думаю, вам нужно добавить в html-код один компонент Html.ValidationMessageFor
. Этот компонент показывает проверку.
Код может быть (с использованием бритвы):
@Html.TextBoxFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
попробуйте.