私はメールフィールドでこのコードを使用しています:
_ [Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
_
[DataType(DataType.EmailAddress)]
は機能しません(検証はクライアント側にないサーバーでは発生しません)。
自分でカスタム属性を実装する必要があるのか、MVC 3に含まれている属性を使用できるのかはわかりません。
必要な場合にカスタム属性を作成するためのソリューションを提案してください。
いくつかの追加の拡張機能についても読みます。例 http://nuget.org/packages/DataAnnotationsExtensions.MVC
提案していただけますか?
現時点では、DataAnnotationsExtensionsを使用して問題を解決しました
動作します。NuGetでライブラリを追加します
using DataAnnotationsExtensions;
[Required]
[DataType(DataType.EmailAddress)]
[Email]
public string Email { get; set; }
[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;}
幸運を祈ります!
この問題はビュー自体の影響を受ける可能性がありますが、すべての回答がデータモデルに焦点を当てているようです。
MVC .NET 4.5の次は正常に動作しています。
データ・モデル:
[Required]
[DataType(DataType.EmailAddress)]
[DisplayName("Email")]
public string Email { get; set; }
かみそりビュー:
@Html.LabelFor(model => model.Email)
@Html.EditorFor(model => model.Email)
注: [EmailAddress]属性を追加する必要はありません。ビューで@ Html.EditorFor()とともに[DataType(DataType.EmailAddress)]を使用する場合、問題ありません。
Rich.okellyで強調表示されているように、最後に入力を<input type="email" />
。
これは誰かに役立つかもしれません。私の作品をフォローする
[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
Felix言及 のように、問題はView
レベルにあり、EditorFor()
の代わりにView
でTextBoxFor()
を使用する必要があります、EditorFor()
は以下をレンダリングします:
<input type="email" />
これにより検証がトリガーされ、TextBoxFor()
がレンダリングされます:
<input type="text" />
したがって、入力したメールアドレスを検証するには、(EditorFor()
と組み合わせて)以下のみを使用する必要があります。
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
この方法では、入力した電子メールの値は常に検証されますが、電子メールの値を入力しないと何も起こりません([Required]
属性を指定しない限り)、フォームは空の電子メールで送信されます住所。