11

jQuery Validation を使用すると、電子メール アドレスの検証が簡単になります。

$("someForm").validate({
    rules: {
        SomeField: {
            required: true,
            email: true,
            remote: {
                type: "POST",
                url: "CheckEmail"
            }
        }
    }
});

これにより、SomeField が必須になり、電子メール アドレスとしてフォーマットする必要があり、CheckEmail アクションへのリモート呼び出しも実行します (重複のチェック)。

私は物事をできるだけシンプルにするのが好きなので、データ注釈で多くの同じことを行うことができます:

public class RegisterModel {
    [Required]
    [Remote("CheckEmail", "Home", HttpMethod="POST")]
    public string SomeField { get; set; }
}

ASP.net MVC 3 / データ注釈には、電子メール アドレスが正しい形式であることを確認するための組み込みの簡単な方法がありますか?

できれば目立たない JavaScript を生成してほしいです。

4

4 に答える 4

11

これはあなたが探しているコードだと思います (これは ScottGu の例に似ていますが、プロパティ名の代わりにデフォルトのエラー メッセージに DisplayName も表示されます):

public class EmailAttribute : RegularExpressionAttribute
{
    private const string defaultErrorMessage = "'{0}' must be a valid email address";

    public EmailAttribute() : 
        base("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9]+(\\.[a-z0-9]+)*\\.([a-z]{2,4})$")
    { }

    public override string FormatErrorMessage(string name)
    {
        return string.Format(defaultErrorMessage, name);
    }

    protected override ValidationResult IsValid(object value,
                                            ValidationContext validationContext)
    {
        if (value != null)
        {
            if (!base.IsValid(value))
            {
                return new ValidationResult(
                    FormatErrorMessage(validationContext.DisplayName));
            }
        }

        return ValidationResult.Success;
    }
}

次に、モデル プロパティは次のようになります。

    [DisplayName("My Email Address")]
    [Email]
    public string EmailAddress { get; set; }
于 2011-05-27T16:10:05.730 に答える
9

ASP.net MVC 3 / データ注釈には、電子メール アドレスが正しい形式であることを確認するための組み込みの簡単な方法がありますか?

組み込みではありませんが、[RegularExpression]. Scott Gu は、ブログ投稿でそのような正規表現の例を示しています。彼は、ロジックの繰り返しを避けるためにEmailAttribute、から派生するカスタムを作成しました。RegularExpressionAttribute

于 2011-05-27T14:22:31.390 に答える
9

Data Annotation Extensionsライブラリには、[Email]電子メール アドレスを検証できる属性があります。

ライブラリの使用方法を概説したブログ投稿もあります。

于 2011-05-27T14:43:24.927 に答える