Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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
Javascript MVC3中的自定义validation.js文件_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript MVC3中的自定义validation.js文件

Javascript MVC3中的自定义validation.js文件,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我的问题是 我想在mvc3中对客户端和服务器端进行验证 我知道如何在服务器端使用验证,但在客户端验证方面有问题 假设我有一个带有razor的文本框 或 因此,错误将显示如下无效电子邮件 现在我想在客户端和服务器端验证电子邮件 对于客户端,我希望在提交表单时首先验证我的owan javascript文件 在客户端,如果其验证,则表单将提交并 服务器端的验证将不会检查。 但是,如果用户从浏览器禁用脚本,那么将执行服务器端验证,服务器端验证应始终启用,并且比客户端验证更有效。有些事情在客户端可能很难

我的问题是

我想在mvc3中对客户端和服务器端进行验证

我知道如何在服务器端使用验证,但在客户端验证方面有问题

假设我有一个带有razor的文本框

因此,错误将显示如下无效电子邮件

现在我想在客户端和服务器端验证电子邮件

对于客户端,我希望在提交表单时首先验证我的owan javascript文件

在客户端,如果其验证,则表单将提交并 服务器端的验证将不会检查。
但是,如果用户从浏览器禁用脚本,那么将执行服务器端验证,

服务器端验证应始终启用,并且比客户端验证更有效。有些事情在客户端可能很难验证,比如模型之间或模型属性之间的复杂交互。 但是,您可以使用
jQuery
validator插件(VSMVC项目模板附带)进行客户端验证。 您在服务器上有验证属性,它实现了
IClientValidatable

public class MyValidationAttribute : ValidationAttribute, IClientValidatable
{

    public override bool IsValid(object value)
    {
        if (value == null) {
            return true;
        }
        //Add validation rules
        if (false) {
            return false;
        }
        return true;
    }

    public override string FormatErrorMessage(string name)
    {
        return "Please provide valid values."
    }

    public IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
    {
        return new ModelClientValidationRule[] { new ModelClientValidationRule {
            ErrorMessage = "Please provide valid values.",
            ValidationType = "validationrule"
        } };
    }
}

确保将其添加到jQuery就绪处理程序之外。有关详细信息,请参阅公认的答案

实际上你在说什么。。或者想做的事情有点让人困惑。。你能详细说明一下吗,。。。。因为定义@html.ValidationMessageFor(m=>m.email)将解决您的问题。。。这就是MVC的基础。。。。!!是的,我知道,但是我想使用jquery来验证它,比如$(document).ready(函数(){$(“#Email”).blur(函数(){validation code goes here});});我的意思是使用外部的.js文件
public class MyValidationAttribute : ValidationAttribute, IClientValidatable
{

    public override bool IsValid(object value)
    {
        if (value == null) {
            return true;
        }
        //Add validation rules
        if (false) {
            return false;
        }
        return true;
    }

    public override string FormatErrorMessage(string name)
    {
        return "Please provide valid values."
    }

    public IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
    {
        return new ModelClientValidationRule[] { new ModelClientValidationRule {
            ErrorMessage = "Please provide valid values.",
            ValidationType = "validationrule"
        } };
    }
}
jQuery.validator.addMethod("validationrule", function (value, element, param) {
    if (value == "") {
        return false;
    }
    return true;
});
jQuery.validator.unobtrusive.adapters.addBool('validationrule');