Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
jquery.validate.unobtrusive中的setValidationValues在文件外部不可用?_Jquery_Asp.net Mvc 3_Unobtrusive Javascript_Jquery Validate - Fatal编程技术网

jquery.validate.unobtrusive中的setValidationValues在文件外部不可用?

jquery.validate.unobtrusive中的setValidationValues在文件外部不可用?,jquery,asp.net-mvc-3,unobtrusive-javascript,jquery-validate,Jquery,Asp.net Mvc 3,Unobtrusive Javascript,Jquery Validate,我通过在服务器端使用自定义ValidationAttribute来扩展MVC 3验证,并实现了IClientValidable来输出html5数据属性以进行自定义验证。然后,我使用jQuery.validator.addMethod添加客户端验证。我的最后一项任务是编写适配器,将html5数据属性转换为jQuery验证器能够理解的格式。我的验证需要几个值,因此我需要使用jQuery.validator.unobtrusive.adapters.add,而不是像addSingleVal这样更简单的

我通过在服务器端使用自定义ValidationAttribute来扩展MVC 3验证,并实现了IClientValidable来输出html5数据属性以进行自定义验证。然后,我使用jQuery.validator.addMethod添加客户端验证。我的最后一项任务是编写适配器,将html5数据属性转换为jQuery验证器能够理解的格式。我的验证需要几个值,因此我需要使用jQuery.validator.unobtrusive.adapters.add,而不是像addSingleVal这样更简单的函数

在我的适配器中,使用jquery.validate.unobtrusive文件中的几个函数(如setValidationValues和getModelPrefix)会很有用,但如果我没有弄错的话,这些函数位于闭包中,因此它们只能在该闭包中使用。我真的不想将我的自定义函数放在microsoft拥有的脚本文件中,因为脚本文件可能会发生更改,因此除非有人有任何想法,否则我必须将这些函数复制到我自己的文件中,这显然是不理想的

那么有什么想法,其他人会怎么做呢?

恐怕没有。
如您所知,这些函数的实现方式如下:

(function ($) { 
   ...  
   function setValidationValues(options, ruleName, value){
      //the implementation 
   }
   ...  
}(jQuery))
只要这个函数是在私有范围内定义的,您就不能从外部访问它,它就是类的私有函数。定义此类函数的目的是,您不能在范围之外访问它们。
minifier方法
也知道这一事实,并使用它尽可能多地压缩js。如果您查看缩小版的
jquery.validate.unobtrusive.min.js
,它证明了不再存在
setValidationValues
函数,而是(一些字母)
x
函数

对于这些功能来说,复制和粘贴并不是什么大问题,只要它们太短而不关心它们的大小。使用minifier,您只需
200字节
,即可获得此函数和其他3个函数。这个200字节将只使用一次


但是,如果使用缩小版,有一种方法可以查找函数名并将其放在
适配器中。添加(function(){//use this name here})
,您会注意到复制和粘贴更好