public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            base.Process(context, output);

            var ruleset = new RulesetBuilder();

            foreach (var metadata in this.For.ModelExplorer.Metadata.ValidatorMetadata)
            {
                if (metadata is JasterValidationAttribute jasterMetadata)
                {
                    jasterMetadata.GenerateRuleset(this.For.ModelExplorer, ruleset);
                }
                else if (metadata is ValidationAttribute validationMetadata)
                {
                    // See if we have a proxy for the attribute.
                    var metadataProxyType = _proxyType.MakeGenericType(metadata.GetType());
                    if (this._provider.GetService(metadataProxyType) is JasterProxyValidatorBase proxy)
                    {
                        proxy.GenerateRulesetBase(validationMetadata, this.For.ModelExplorer, ruleset);
                    }
                }
            }

            output.Attributes.SetAttribute("data-ruleset", ruleset.BuildString());
        }
예제 #2
0
 public abstract void GenerateRuleset(T attribute, ModelExplorer model, RulesetBuilder ruleset);
예제 #3
0
        internal override void GenerateRulesetBase(ValidationAttribute attribute, ModelExplorer model, RulesetBuilder ruleset)
        {
            if (attribute as T == null)
            {
                throw new InvalidCastException($"Type {attribute.GetType()} cannot be casted to {typeof(T)}");
            }

            this.GenerateRuleset(attribute as T, model, ruleset);
        }
예제 #4
0
 internal abstract void GenerateRulesetBase(ValidationAttribute attribute, ModelExplorer model, RulesetBuilder ruleset);
예제 #5
0
 public override void GenerateRuleset(RegularExpressionAttribute attribute, ModelExplorer model, RulesetBuilder ruleset)
 {
     ruleset.AddEntry("regex")
     .AddParam(attribute.Pattern);
 }
예제 #6
0
        public override void GenerateRuleset(StringLengthAttribute attribute, ModelExplorer model, RulesetBuilder ruleset)
        {
            ruleset.AddEntry("min")
            .AddParam($"{attribute.MinimumLength}");

            ruleset.AddEntry("max")
            .AddParam($"{attribute.MaximumLength}");
        }
예제 #7
0
 public override void GenerateRuleset(MaxLengthAttribute attribute, ModelExplorer model, RulesetBuilder ruleset)
 {
     ruleset.AddEntry("max")
     .AddParam($"{attribute.Length}");
 }
예제 #8
0
 public override void GenerateRuleset(RequiredAttribute attribute, ModelExplorer model, RulesetBuilder ruleset)
 {
     if (model.ModelType == typeof(string))
     {
         ruleset.AddEntry("not-empty");
     }
 }