Cod*_*awk 6 validation client-side-validation asp.net-mvc-4
这是我的属性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; }
Run Code Online (Sandbox Code Playgroud)
这是渲染的输出
<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">
Run Code Online (Sandbox Code Playgroud)
验证当前的验证顺序是
我想将订单更改为
我用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();
}
}
Run Code Online (Sandbox Code Playgroud)
要使用OrderedAnnotationsModelValidatorProvider它,您必须将它注册到Global.asax.cs中的ModelValidatorProviders的ModelValidatorProvidersCollection.
ModelValidatorProviders.Providers.Add(new OrderedAnnotationsModelValidatorProvider());
Run Code Online (Sandbox Code Playgroud)