当前位置 : 主页 > 网络编程 > ASP >

ASP.NET MVC3模型验证DataAnnotations使用客户端验证执行小于或等于另一个属性

来源:互联网 收集:自由互联 发布时间:2021-06-24
我有一个简单的表单,它使用ASP.NET MVC 3不显眼的客户端验证. 该模型看起来有点像这样(名称因隐私而改变): public class MyInputModel{ public MyInputModel() { } public MyInputModel(MyViewData viewData) { Vi
我有一个简单的表单,它使用ASP.NET MVC 3不显眼的客户端验证.

该模型看起来有点像这样(名称因隐私而改变):

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

网友评论