当前位置: 首页 > 编程语言 > C#

客户端自定义数据注解验证分享

时间:2023-04-11 10:54:09 C#

客户端自定义数据注解验证我创建了一个自定义数据注解来对我的视图模型做一些验证。问题是它没有在客户端进行身份验证。这是我的模型:publicclassMemberViewModel{[ScaffoldColumn(false)]publicintMemberId{get;放;}[Required(ErrorMessage="Nameisrequired")]publicstringName{get;放;}//我的自定义数据注解[EnforceTrue(ErrorMessage="YoumustagreetotheTermsandConditions")]publicboolAgreeTerms{get;放;}}我的数据注解验证码:publicclassEnforceTrueAttribute:ValidationAttribute,IClientValidatable{publicEnforceTrueAttribute(){}publicoverrideboolIsValid(objectvalue){returnvalue!=null&&(bool)value==true;}publicIEnumerableGetClientValidationRules(ModelMetadatametadata,ControllerContextcontext){yieldreturnnewModelClientValidationRule(){ValidationType="enforcetrue",ErrorMessage=this.ErrorMessageString};}}我的控制器方法:[HttpPost]publicActionResultIndex(MemberViewModelviewModel){Membermember=newMember();TryUpdateModel(成员);如果(ModelState.IsValid){_membersRepository.SaveMember(成员);返回RedirectToAction("索引","主页");}返回视图(视图模型);//验证错误,所以重新显示相同的视图}我的观点是:@using(Html.BeginForm("Index","Members",FormMethod.Post)){@Html.HiddenFor(m=>m.MemberId)@Html.LabelFor(model=>model.Name)@Html.TextBoxFor(model=>model.Name)@Html.CheckBoxFor(model=>model.AgreeTerms)我同意条款和条件@Html.ValidationSummary()}所以我所有的其他错误消息显示在客户端验证的验证摘要中,但对于我的自定义数据注释,错误消息在模型的其余部分有效之前不会显示,并且在您提交表单和页面重新加载后,错误出现在摘要中。我还需要做些什么才能让它显示在其他错误的摘要中吗?我正在使用C#和ASP.NETMVC3最近遇到了同样的问题。你可以这样写:$.validator.addMethod('enforcetrue',function(value,element){return$(element).is(":checked");});$.validator.unobtrusive.adapters.add('enforcetrue',[],function(options){options.messages['enforcetrue']=options.message;options.rules['enforcetrue']=options.params;});此处类似问题ASP.NETMVC3clientvalidationImplementingIclientValidatablewillonlyaddunobtrusiveattributestothegeneratedhtmlinput。要在客户端启用验证,您必须编写使用这些不显眼的属性来验证输入的验证器。Hereyoucanfindaverygoodexplanationaboutclientandservervalidationinasp.netmvc3你需要一个远程验证器链接http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-1以上就是C#学习教程:客户端自定义数据注解验证分享的全部内容,如果对大家有用还需要了解更多C#学习教程,希望大家多多关注吧~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢