2

MVCでクライアント側の検証を介して「データベース」チェックを実行する方法はありますか?

私は次のクラスを持っています

public class EmailCheck : ValidationAttribute,IClientValidatable
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        string sErrorMessage = "Email already exists";
        return new ValidationResult(sErrorMessage); 
    }   

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule validationRule = new ModelClientValidationRule();
        validationRule.ValidationType = "checkemail";
        validationRule.ErrorMessage = "Invalid Email Format";
        validationRule.ValidationParameters.Add("param", "");
        return new List<ModelClientValidationRule> { validationRule };
    }  
}

クライアント側の検証で、「checkemail」javascript関数で通常のjavascriptチェックを実行するだけでなく、「IsValid」メソッドをonkeyup /lostfocusでも呼び出すようにしたいと思います。

私が持っているjavascript関数は次のとおりです。

//Validation for Well-Formed Email
jQuery.validator.addMethod("checkemail",
    function (value, element, param) {
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

        if (!emailReg.test(value))
            return false;

        return true;
    });

jQuery.validator.unobtrusive.adapters.add("checkemail", ["param"], function (options) {    
    options.rules["checkemail"] = options.params.param;
    options.messages["checkemail"] = options.message;
});

誰かが私を正しい方向に導いたり、似たようなもののチュートリアルを提供したりしていただければ幸いです。

ありがとう

4

2 に答える 2

4

モデルで「リモート」属性を使用してみてください

http://msdn.microsoft.com/en-us/library/gg508808%28v=vs.98%29.aspx

于 2012-11-21T12:41:58.243 に答える
0

さびたは正しいです、あなたはあなたのモデルでリモート属性を使う必要があります

これは、MVCでの電子メール検証のみの完全な詳細を含む別の例です

asp.netのデータベースからの電子メールのMVCモデル検証

于 2014-04-15T16:40:44.537 に答える