我有一个简单的表单,它使用ASP.NET MVC 3不显眼的客户端验证. 该模型看起来有点像这样(名称因隐私而改变): public class MyInputModel{ public MyInputModel() { } public MyInputModel(MyViewData viewData) { Vi
该模型看起来有点像这样(名称因隐私而改变):
public class MyInputModel { public MyInputModel() { } public MyInputModel(MyViewData viewData) { ViewData = viewData; MaxValueForSize = viewData.MaxSize; } public int MaxValueForSize { get; set; } [RegularExpression("[1-9][0-9]*",ErrorMessage = "The value must be a whole number.")] public int Size { get; set; } [StringLength(255)] [Required] public string Description{ get; set; } }
在我看来,我为MaxValueForSize设置了一个隐藏字段,我想将输入的Size值与小于或等于MaxValueForSize属性进行比较.
我知道我可以通过覆盖验证属性来做这个服务器端,如下所示:
internal class SizeValidAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if(value != null) { var model = (MyInputModel) validationContext.ObjectInstance; if ((int)value > model.MaxValueForSize) return new ValidationResult(ErrorMessage); } return base.IsValid(value, validationContext); } }
但是,我想(需要)对此属性进行客户端验证.与比较注释的工作方式类似.
有谁知道这样做的方法?我是否需要以某种方式扩展客户端验证?
谢谢你的帮助.
看看这篇文章.它解释了如何扩展ASP.NET MVC模型验证以支持跨字段验证:扩展ASP.NET MVC的验证
http://blogs.msdn.com/b/mikeormond/archive/2010/10/05/extending-asp-net-mvc-s-validation.aspx