web-dev-qa-db-ja.com

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" }
          ) * 

だから、誰もが答えを知っていますか?

TIA

51
lifeofbenschi

DataType属性は、検証ではなくフォーマットの目的で使用されます。

メール検証に ASP.NET MVC 3 Futures を使用することをお勧めします。

サンプルコード:

[Required]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }

.NET Framework 4.5を使用している場合は、 System.ComponentModel.DataAnnotations.EmailAddressAttribute にあるEmailAddressAttributeが組み込まれています。

113

DataAnnotationsExtensions プロジェクトには、使用できる Email属性 があります。

8
jrummell

ソースコード(Reflectorによってリバースエンジニアリングされた)を見て、DataTypeバリアントは実際には実装されていません! (これはDateType.Date

そのため、うまくいきません。

個人的にRegexValidationをメールに使用します。


わかりやすくするために、クラスIsValidDataTypeAttributeの実装を次に示します。

public override bool IsValid(object value)
{
    return true;
}
3
Aliostad