Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC客户端验证执行数据库检查_Asp.net Mvc_Asp.net Mvc 3_Jquery_Asp.net Mvc Validation - Fatal编程技术网

Asp.net mvc MVC客户端验证执行数据库检查

Asp.net mvc MVC客户端验证执行数据库检查,asp.net-mvc,asp.net-mvc-3,jquery,asp.net-mvc-validation,Asp.net Mvc,Asp.net Mvc 3,Jquery,Asp.net Mvc Validation,有没有办法通过MVC中的客户端验证来执行数据库检查 我有以下课程 public class EmailCheck : ValidationAttribute,IClientValidatable { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { string sErrorMessage = "Email already

有没有办法通过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 };
    }  
}
如果有人能为我指引正确的方向或提供类似的指导,我将不胜感激


感谢您在您的型号中尝试使用“远程”属性


在您的模型中,尝试使用“远程”属性


Rusty是正确的,您需要在模型中使用Remote属性

下面是另一个示例,其中完整的细节仅用于MVC中的电子邮件验证


Rusty是正确的,您需要在模型中使用Remote属性

下面是另一个示例,其中完整的细节仅用于MVC中的电子邮件验证


好的,谢谢,这似乎奏效了。。然而,当我实现RemoteAttribute时,客户端验证javascript检查似乎停止了工作。这正常吗?什么样的支票?你能详细说明一下吗?RemoteAttribute允许您在视图上定义当有人在您的文本框中输入值时要调用的javascript函数。我有一个名为[EmailCheck]的自定义ValidationAttribute检查,它触发了调用javascript函数checkemail onkeyup的GetClientValidationRules。该函数不再被调用,或者可以使用RemoteAttribute调用该javascript函数吗?我认为不需要调用javascript函数[Remotecheckemail,controllername,AdditionalFields=IDUser的id,HttpMethod=POST,ErrorMessage=具有相同电子邮件地址的用户已经存在]“远程”属性将自动调用检查数据库中现有电子邮件的操作。不,对不起,可能我没有正确解释。我首先使用了一个名为checkmail的客户端验证javascript函数,它在regex中检查用户输入的格式是否正确。如果成功,我希望它使用RemoteAttribute在数据库中执行必要的检查。这是可能的,还是我应该把所有的都合并成一个函数?好的,谢谢,这似乎很有效。。然而,当我实现RemoteAttribute时,客户端验证javascript检查似乎停止了工作。这正常吗?什么样的支票?你能详细说明一下吗?RemoteAttribute允许您在视图上定义当有人在您的文本框中输入值时要调用的javascript函数。我有一个名为[EmailCheck]的自定义ValidationAttribute检查,它触发了调用javascript函数checkemail onkeyup的GetClientValidationRules。该函数不再被调用,或者可以使用RemoteAttribute调用该javascript函数吗?我认为不需要调用javascript函数[Remotecheckemail,controllername,AdditionalFields=IDUser的id,HttpMethod=POST,ErrorMessage=具有相同电子邮件地址的用户已经存在]“远程”属性将自动调用检查数据库中现有电子邮件的操作。不,对不起,可能我没有正确解释。我首先使用了一个名为checkmail的客户端验证javascript函数,它在regex中检查用户输入的格式是否正确。如果成功,我希望它使用RemoteAttribute在数据库中执行必要的检查。这是可能的,还是我应该把所有的都合并成一个函数?
//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;
});