2

同じクラス内の2つの値を比較できる新しいカスタム検証を作成しようとしています。この場合、ユーザーがメールを変更するときにメールを2回入力する必要があり、これら2つの値が一致することを確認します。(パスワードの追加/変更についても同じことをします)

    public class CompareAttribute : ValidationAttribute
    {
        public string CompareValue { get; set; }

        public override bool IsValid(string value)
      {
        //we not validating if its required or not!
        if (value == null)
            return true;



        return value.ToLower().Equals(CompareValue.ToLower());
       }
     }

これは上記の私のvalidationattributeクラスです。それから私はこれをやって私のクラスの中からそれを使おうとしました

[Compare(CompareValue = newEmail, ErrorMessage = "New email and Confirm email do not match")]

しかし、newEmailでエラーが発生します

エラー3非静的フィールド、メソッド、またはプロパティ'BensBoxing.Domain.EmailChange.newEmail.get'にはオブジェクト参照が必要です

私のクラス全体はこれです

public class EmailChange : Entity
{
    [DisplayName("Current Email Address")]
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "Current Email is a required field")]
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
    public virtual string currentEmail { get; set; }

    [DisplayName("New Email Address")]
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "New Email is a required field")]
    [EmailInUse(ErrorMessage = "Email is currently in use")]
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
    public virtual string newEmail { get; set; }

    [DisplayName("Confirm Email Address")]
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "Confirmed Email is a required field")]
    [Compare(CompareValue = newEmail, ErrorMessage = "New email and Confirm email do not match")]
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
    public virtual string confirmEmail { get; set; }

}
4

1 に答える 1

1

使用できるデータ注釈拡張機能がいくつかあり、現在さらに多くの拡張機能が開発されているため、いわば車輪の再発明を行う必要はありません。リンクをたどるhttp://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx 必要なのは、Nugetを使用してプロジェクトに拡張機能を追加することだけです。組み込みの注釈を使用する準備ができています。乾杯!

于 2011-03-19T20:47:17.613 に答える