使用数据注解强制模型的布尔值为真这里的问题很简单(我认为)。我的表单底部有一个复选框,用户必须同意其中的条款和条件。如果用户不选中该框,我想在我的验证摘要中显示一条错误消息以及其他表单错误。我将此添加到我的视图模型中:[Required][Range(1,1,ErrorMessage="YoumustagreetotheTermsandConditions")]publicboolAgreeTerms{get;放;但这没有用。有没有一种简单的方法可以使用数据注释强制执行true值?使用System.Collections.Generic;使用System.ComponentModel.DataAnnotations;使用System.Threading.Tasks;使用System.Web.Mvc;命名空间Checked.Entitites{publicclassBooleanRequiredAttribute:ValidationAttribute,IClientValidatable{publicoverrideboolIsValid(objectvalue)returnvalue!=null&&(bool)value==true;}publicIEnumerableGetClientValidationRules(ModelMetadatametadata,ControllerContextcontext){//returnnewModelClientValidationRule[]{newModelClientValidationRule(){ValidationType="booleanrequired",ErrorMessage=this.ErrorMessage}};yieldreturnnewModelClientValidationRule(){ValidationType="booleanrequired",ErrorMessage=this.ErrorMessageString};您可以编写已经提到的自定义验证属性。如果您正在进行客户端身份验证,则需要编写自定义javascript以启用不显眼的身份验证功能。例如,如果您使用jQuery://extendjqueryunobtrusivevalidation(function($){//为布尔属性添加验证器$.validator.addMethod("booleanrequired",function(value,element,params){//value:输入到输入中的值//element:被验证的元素//params:在不显眼的适配器中指定的参数//在这里进行验证并返回true或false});//然后你需要挂钩自定义验证属性进入MS非侵入式验证器$.validator.unobtrusive.adapters.add("booleanrequired",//适配器名称["booleanrequired"],//将传递给验证器方法的对象属性的名称function(options){//设置验证器方法的属性options.rules["booleanRequired"]=options.params;//设置验证失败时输出的消息options.messages["booleanRequired]=options.message;});}(jQuery));另一种方式(有点像黑客,我不喜欢它)是在模型上有一个最终设置为true的属性,然后使用CompareAttribute来比较*AgreeTerms*属性的值很简单,但我不喜欢它:)以上是C#学习教程:使用数据注释强制模型的布尔值为真。更多关于C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
