8

メールアドレスをユーザー名として使用しているアカウントモデルがあります

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

メールを確認するためのカスタム クラスを設計しました。しかし、私は最近、DataType.EmailAddress. 上記のコードに示すように、このデータ型を使用して、カスタム クラスなしでユーザー名を検証できるかどうかを確認しようとしましたが、失敗しました。だから私の質問は、この DataType が でどのように役立つかです.NET。私の登録フォームでは何もしていないようです。

編集:正規表現に対しても検証しません。たとえば、ユーザー名:SS, ssssss, tttt, etcすべて有効な電子メールとして偽装します。

編集:コードビハインドで電子メールを検証するクラスを持っている人。メールの検証が複雑であることは承知しています。メールを検証する方法を尋ねているわけではありません。このデータ型の使用について尋ねているだけです。

4

4 に答える 4

16

それで、あなたはこのデータ型が何をしないのかを尋ねていますが、なぜそれが検証されないのですか? MSDN によると、DataType 属性は主に書式設定に使用され、検証には使用されません (これについては学習済みです)。この属性が行うべきことは、Html.DisplayFor()ヘルパーを使用するときに、フィールドをクリック可能なハイパーリンクとしてレンダリングすることです。

@Html.DisplayFor(x=>x.UserName)

レンダリング

<a href="mailto:{0}">{0}</a>

さらに、以下のコメントで Zhaph が指摘しているように、これを で使用すると、次のHtml.EditorFor()ような HTML 5 メール入力が生成されます。

<input type="email".../>

MSDNから

次の例では、DataTypeAttribute を使用して、AdventureWorksLT データベースの顧客テーブルの EmailAddress データ フィールドの表示をカスタマイズします。電子メール アドレスは、ASP.NET 動的データが固有のデータ型から推測した単純なテキストではなく、ハイパーリンクとして表示されます。

于 2013-10-17T15:22:26.090 に答える