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()); }
public abstract void GenerateRuleset(T attribute, ModelExplorer model, RulesetBuilder ruleset);
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); }
internal abstract void GenerateRulesetBase(ValidationAttribute attribute, ModelExplorer model, RulesetBuilder ruleset);
public override void GenerateRuleset(RegularExpressionAttribute attribute, ModelExplorer model, RulesetBuilder ruleset) { ruleset.AddEntry("regex") .AddParam(attribute.Pattern); }
public override void GenerateRuleset(StringLengthAttribute attribute, ModelExplorer model, RulesetBuilder ruleset) { ruleset.AddEntry("min") .AddParam($"{attribute.MinimumLength}"); ruleset.AddEntry("max") .AddParam($"{attribute.MaximumLength}"); }
public override void GenerateRuleset(MaxLengthAttribute attribute, ModelExplorer model, RulesetBuilder ruleset) { ruleset.AddEntry("max") .AddParam($"{attribute.Length}"); }
public override void GenerateRuleset(RequiredAttribute attribute, ModelExplorer model, RulesetBuilder ruleset) { if (model.ModelType == typeof(string)) { ruleset.AddEntry("not-empty"); } }