大佬教程收集整理的这篇文章主要介绍了jquery – mvc3自定义验证属性不在客户端验证,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class CreditCardAttribute : ValidationAttribute,IClientValidatable { public override bool IsValid(object value) { var number = Convert.ToString(value); return IsValidnumber(number); } private bool IsValidnumber(String number) { int[] DELTAS = new int[] { 0,1,2,3,4,-4,-3,-2,-1,0 }; int checksum = 0; char[] chars = number.tocharArray(); for (int i = chars.Length - 1; i > -1; i--) { int j = ((int)chars[i]) - 48; checksum += j; if (((i - chars.Length) % 2) == 0) checksum += DELTAS[j]; } return ((checksum % 10) == 0); } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata Metadata,ControllerContext context) { yield return new ModelClientValidationRule { Errormessage = this.Errormessage,ValidationType = "CreditCard" }; } }
jQuery的:
jQuery.validator.addMethod('CreditCardtest',function (value,element,params) { return false; }); jQuery.validator.unobtrusive.adapters.add('CreditCard',{ },function(options){ options.rules['CreditCardtest'] = true; options.messages['CreditCardtest'] = options.message; });
我不确定应该去CreditCardTest,我想在这里重写我在模型中的内容吗?
谢谢
但是如果您对如何在一般情况下实现它感兴趣,则必须在javascript中实现与服务器上相同的逻辑.
您的自定义验证属性只有一个问题,这是验证类型的名称,它必须只包含小写字母:
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata Metadata,ControllerContext context) { yield return new ModelClientValidationRule { Errormessage = this.Errormessage,ValidationType = "creditcard" // this should be only lowercase letters }; }
一旦我们修复了,我们就可以在客户端上实现相同的验证逻辑:
@model Myviewmodel <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> <script type="text/javascript"> var isValidnumber = function (value,params) { var DELTAS = [0,0]; var checksum = 0; for (var i = value.length - 1; i > -1; i--) { var j = value.charCodeAt(i) - 48; checksum += j; if (((i - value.Length) % 2) == 0) { checksum += DELTAS[j]; } } return (checksum % 10) == 0; }; jQuery.validator.addMethod('CreditCardtest',isValidnumber); jQuery.validator.unobtrusive.adapters.add('creditcard',function (options) { options.rules['CreditCardtest'] = true; options.messages['CreditCardtest'] = options.message; }); </script> @using (Html.beginForm()) { @Html.EditorFor(x => x.number) @Html.ValidationmessageFor(x => x.number) <button type="submit">OK</button> }
以上是大佬教程为你收集整理的jquery – mvc3自定义验证属性不在客户端验证全部内容,希望文章能够帮你解决jquery – mvc3自定义验证属性不在客户端验证所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。