gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:15:38 25 4
gpt4 key购买 nike

这是我的模型与属性 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">

当前的验证触发顺序是
  • 需要
  • 正则表达式
  • 长度

  • 我想将订单更改为
  • 需要
  • 长度
  • 正则表达式

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

    最佳答案

    您可以创建一个从 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());

    关于asp.net-mvc-4 - 更改 asp.net mvc 4 模型中验证触发的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13283571/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com