加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 在asp.net mvc 4模型中更改验证触发顺序

发布时间:2020-12-15 21:07:38 所属栏目:asp.Net 来源:网络整理
导读:这是我的属性OldPassword的模型 [Required] [StringLength(16,ErrorMessage = "The Old Password must be at least 8 characters long.",MinimumLength = 8)] [RegularExpression("^(?=.*[a-z])(?=.*[A-Z]).+$",ErrorMessage = "Old Password is Not a valid
这是我的属性OldPassword的模型
[Required]
 [StringLength(16,ErrorMessage = "The Old Password must be at least 8 characters long.",MinimumLength = 8)]
 [RegularExpression("^(?=.*[a-z])(?=.*[A-Z]).+$",ErrorMessage = "Old Password is Not a valid Password")]
 [Display(Name = "Old Password")]
 public string OldPassword { get; set; }

这是渲染的输出

<input class="inputsmall defaultFocus input-validation-error" data-val="true" 
data-val-length="The Old Password must be at least 8 characters long." 
data-val-length-max="16" data-val-length-min="8" 
data-val-regex="Old Password is Not a valid Password" 
data-val-regex-pattern="^(?=.*[a-z])(?=.*[A-Z]).+$" 
data-val-required="The Old Password field is required." id="OldPassword" maxlength="16" name="OldPassword" style="width: 295px;" type="password">

验证当前的验证顺序是

>必填
>正则表达式
>长度

我想将订单更改为

>必填
>长度
>正则表达式

我用Google搜索了很多,找不到任何直接的解决方案.请帮我解决一下这个.

解决方法

您可以创建一个继承自DataAnnotationsModelValidatorProvider的自定义类,并覆盖其中的GetValidators方法并将其注册为ModelValidator.在重写方法中,您可以根据需要对验证器进行排序.
public class OrderedAnnotationsModelValidatorProvider : DataAnnotationsModelValidatorProvider
{
    public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata,ControllerContext context)
    {
        return base.GetValidators(metadata,context).OrderBy(v => v.SomeProperty).AsEnumerable();
    }
}

要使用OrderedAnnotationsModelValidatorProvider,您必须将它注册到Global.asax.cs中的ModelValidatorProviders的ModelValidatorProvidersCollection.

ModelValidatorProviders.Providers.Add(new OrderedAnnotationsModelValidatorProvider());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读