复合验证

时间:2012-08-01 18:13:17

标签: asp.net-mvc-3 razor

我有一个下拉列表,如果选择了某个项目,则会弹出一个子窗体(显示的隐藏div),其中包含更多需要填写的内容。验证此类问题的最佳方法是什么?我想过编写一个验证器(使用ValidationAttribute,IClientValidatable),但这意味着我必须从表单的其余部分中取出该组框,以便将它们验证为1个对象。

提前致谢。

跟进:我发现这就是我想做的客户端! http://foolproof.codeplex.com/
[RequiredIf]
[RequiredIfNot]
[RequiredIfTrue]
[RequiredIfFalse]
[RequiredIfEmpty]
[RequiredIfNotEmpty]
[RequiredIfRegExMatch]
[RequiredIfNotRegExMatch]
_
没关系已经发现了一堆万无一失的问题

1 个答案:

答案 0 :(得分:1)

您需要扩展ValidationAttribute以创建自定义验证器。它可能是这样的:

        public YourValidatorNameAttribute()
        {
            ErrorMessage =  /** your not valid messaging **/;
        }  



        public override bool IsValid(object value)
        {
            bool isValid = true;
            YourClass c = value as YourClass;
            if (c != null)
            {
                if (/** check if the item in your dropdown is selected**/)
                {
                    isValid = /** check value of fields or whatever validation is needed in the 'more stuff' fields**/;
                }
            }
            return isValid;
        }