32

私はメールフィールドでこのコードを使用しています:

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email address")]
    public string Email { get; set; }

[DataType(DataType.EmailAddress)]動作しません(クライアント側以外のサーバーでは検証は行われません)。

カスタム属性を自分で実装する必要があるのか​​、MVC3に含まれている属性を使用できるのかわかりません。

必要に応じて、カスタム属性を作成するための解決策を提案してください。

http://nuget.org/packages/DataAnnotationsExtensions.MVC3などの追加の拡張機能についても読みました。

提案してもらえますか?

4

6 に答える 6

50

[EmailAddress] を使用するだけで、通常の DataAnnotations ライブラリを使用できます。

using System.ComponentModel.DataAnnotations;
    [Required]
    [EmailAddress]
    public String Email { get; set; }

また、参考までに、この検証の正規表現バージョンを次に示します。

    [RegularExpression(@"^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-‌​]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$", ErrorMessage = "Email is not valid")]
    public String Email {get; set;}

頑張ってください!

于 2012-07-12T14:20:40.407 に答える
12

現時点では、DataAnnotationsExtensions を使用して問題を解決しました

それはうまくいきます.NuGetでライブラリを追加します

using DataAnnotationsExtensions;


[Required]
    [DataType(DataType.EmailAddress)]
    [Email]
    public string Email { get; set; }
于 2012-07-12T14:15:37.750 に答える
4

これは誰かにとって役立つかもしれません。私のために次の作品

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

しかし、次のように動作しません

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

私はMVC 5&を使用しています.NET 4.5

于 2014-08-27T20:35:08.173 に答える
2

Felix が述べたように、問題はViewレベルにありEditorFor()ます。ViewTextBoxFor()EditorFor()

<input type="email" />

これは検証をトリガーし、TextBoxFor()レンダリングします:

<input type="text" />

したがって、入力した電子メール アドレスを検証するには、( と組み合わせてEditorFor()) 次のもののみを使用する必要があります。

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

このように、email に入力した値は常に検証されますが、email に値を入力しないと ([Required]属性を指定しない限り) 何も起こらず、空のメール アドレスでフォームが送信されます。

于 2016-05-15T15:25:07.880 に答える