public override IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            var errorMessage = FormatErrorMessage(metadata.GetDisplayName());

            var cases = new List <RegularExpressionCase>();

            foreach (var rule in Rules)
            {
                var expression           = CreateExpression(metadata.ContainerType, rule.Condition);
                var visitor              = new JavascriptExpressionVisitor();
                var javascriptExpression = visitor.Translate(expression);

                cases.Add(new RegularExpressionCase(javascriptExpression, rule.RegularExpression));
            }
            var clientRule = new ModelClientValidationRule
            {
                ErrorMessage         = errorMessage,
                ValidationType       = ValidationType,
                ValidationParameters =
                {
                    { "cases", JsonConvert.SerializeObject(cases) }
                }
            };

            return(new[] { clientRule });
        }
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            string errorMessage = FormatErrorMessage(metadata.GetDisplayName());

            Expression expression           = CreateExpression(metadata.ContainerType, _condition);
            var        visitor              = new JavascriptExpressionVisitor();
            string     javascriptExpression = visitor.Translate(expression);

            var clientRule = new ModelClientValidationRule
            {
                ErrorMessage         = errorMessage,
                ValidationType       = "requiredif",
                ValidationParameters =
                {
                    { "expression", javascriptExpression }
                }
            };

            return(new[] { clientRule });
        }