为了账号安全,请及时绑定邮箱和手机立即绑定

带参数的ASP.NET MVC 3客户端验证

带参数的ASP.NET MVC 3客户端验证

哈士奇WWW 2019-10-25 09:56:53
继本文之后,对定制属性执行客户端验证我正在尝试将方法传递给客户端脚本,以了解如何执行此操作据我了解,到目前为止,要使用MVC 3实现自定义验证,需要执行以下操作创建一个自定义验证属性基于ValidationAttribute并实现IClientValidatable。我还看到了一些来自ModelValidator的示例,该示例似乎实现了ValidationAttribute和IClientValidatable的功能。所以这是我的第一点困惑,是关于差异是什么,还是在MVC 2中使用了ModelValidator,但现在不赞成使用它还是什么?必须从GetClientValidationRules()返回ModelClientValidationRule的实例,以指定详细信息,例如错误消息,ValidationType(我理解为将执行客户端验证的Javascript函数的名称)以及该属性的任何其他自定义参数可能有,并且需要传递给Javascript验证。我假设运行时(不确定它的哪一部分)然后使用ModelClientValidationRule来在标记元素中生成html属性,如下所示:data-val="true"  (to indicate that the element requires validation)data-val-[ValidationType]=[ErrorMessage]data-val-[ValidationType].[ValidationParameters(n).Key]=[ValidationParameters(n).Value]实现客户端验证逻辑必须创建一个Javascript函数,并使用jQuery.validators.addmethod()将其添加到jQuery.validators中,以便JQuery在需要执行时就知道它。就像是:jQuery.validator.addMethod(    'greaterThan',     function (value, element, params) {        /.../       return /* true or false   */ ;     },    ''); 我的问题是,签名“函数(值,元素,参数)”是否为处理验证方法的标准,我认为某些jQuery功能会在适当的时间(例如,在提交表单之前或提交表单时)调用该函数。元素松动或在keyUp事件上。我只是不了解如何控制此事件,即选择哪个事件适合您的自定义验证。实施不干扰的适配器这会将不干扰的属性转换为;我不太清楚这件事,但是假设它是jQuery规则,但是我不清楚它们是如何工作的。就像是jQuery.validator.unobtrusive.adapters.add(    'futuredate',     { },    function (options) {        options.rules['greaterThan'] = true;        options.messages['greaterThan'] = options.message;    }); 我的问题是关于“功能(选项)”。这是将在“功能(值,元素,参数)”之前调用的功能,该功能负责将不引人注目的标签提取到jQuery.Validation可以理解的数据结构中。从代码示例中,在我看来,options是一个对象,其中包含标签的属性值(例如options.message)和它必须映射到的jQuery相关属性(例如options.messages ['ClientSideValidationFunctionName']如果是这样,如何检索和映射自定义参数。我希望我不会再增加任何混乱。
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

ModelValidator方法来自MVC2,在我看来,今后不应在MVC3项目上使用该方法。MVC3 ValidationAttribute / IClientValidatable方法更加简洁,并且不涉及修改global.asax来注册适配器。

查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 374 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信