private static void Serialize(string name, PropertyValidationInfo property, StringBuilder sb) { sb.Append("#PREFIX#"); sb.Append(name); sb.Append(":{"); foreach (var attribute in property.Validators) { if (attribute is ValidateComponentAttribute) { continue; } foreach (var kvp in attribute.ToProperties()) { sb.AppendFormat("{0}:{1},", kvp.Key, kvp.Value); } } var tip = property.Property.GetCustomAttributes(typeof(TipAttribute), true); if (tip != null && tip.Length > 0) { sb.AppendFormat("tip:'{0}'", (((TipAttribute)tip[0]).Tip).Replace("'", "\\'")); } sb.RemoveLastIf(','); sb.Append("},"); }
internal static PropertyValidationInfo GetPropertyValidationInfo(ModelBindingContext bindingContext) { var validationInfo = new PropertyValidationInfo(); var modelTypeInfo = bindingContext.ModelType.GetTypeInfo(); var typeAttribute = modelTypeInfo.GetCustomAttribute <BindingBehaviorAttribute>(); var properties = bindingContext.ModelType.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var property in properties) { var propertyName = property.Name; var propertyMetadata = bindingContext.ModelMetadata.Properties[propertyName]; if (propertyMetadata == null) { // Skip indexer properties and others ModelMetadata ignores. continue; } var validatorProviderContext = new ModelValidatorProviderContext(propertyMetadata); bindingContext.OperationBindingContext.ValidatorProvider.GetValidators(validatorProviderContext); var requiredValidator = validatorProviderContext.Validators .FirstOrDefault(v => v != null && v.IsRequired); if (requiredValidator != null) { validationInfo.RequiredValidators[propertyName] = requiredValidator; } var propertyAttribute = property.GetCustomAttribute <BindingBehaviorAttribute>(); var bindingBehaviorAttribute = propertyAttribute ?? typeAttribute; if (bindingBehaviorAttribute != null) { switch (bindingBehaviorAttribute.Behavior) { case BindingBehavior.Required: validationInfo.RequiredProperties.Add(propertyName); break; case BindingBehavior.Never: validationInfo.SkipProperties.Add(propertyName); break; } } else if (requiredValidator != null) { validationInfo.RequiredProperties.Add(propertyName); } } return(validationInfo); }
private static void SerializeProperty(string chain, PropertyValidationInfo property, StringBuilder sb) { chain += property.Property.Name; if (property.Component == null) { Serialize(chain, property, sb); return; } chain += '_'; foreach (var p in property.Component.Properties) { SerializeProperty(chain, p, sb); } }
internal static PropertyValidationInfo GetPropertyValidationInfo(ModelBindingContext bindingContext) { var validationInfo = new PropertyValidationInfo(); var modelTypeInfo = bindingContext.ModelType.GetTypeInfo(); var typeAttribute = modelTypeInfo.GetCustomAttribute <BindingBehaviorAttribute>(); var properties = bindingContext.ModelType.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var property in properties) { var propertyName = property.Name; var propertyMetadata = bindingContext.PropertyMetadata[propertyName]; var requiredValidator = bindingContext.GetValidators(propertyMetadata) .FirstOrDefault(v => v.IsRequired); if (requiredValidator != null) { validationInfo.RequiredValidators[propertyName] = requiredValidator; } var propertyAttribute = property.GetCustomAttribute <BindingBehaviorAttribute>(); var bindingBehaviorAttribute = propertyAttribute ?? typeAttribute; if (bindingBehaviorAttribute != null) { switch (bindingBehaviorAttribute.Behavior) { case BindingBehavior.Required: validationInfo.RequiredProperties.Add(propertyName); break; case BindingBehavior.Never: validationInfo.SkipProperties.Add(propertyName); break; } } else if (requiredValidator != null) { validationInfo.RequiredProperties.Add(propertyName); } } return(validationInfo); }
internal static PropertyValidationInfo GetPropertyValidationInfo(ModelBindingContext bindingContext) { var validationInfo = new PropertyValidationInfo(); foreach (var propertyMetadata in bindingContext.ModelMetadata.Properties) { var propertyName = propertyMetadata.PropertyName; if (!propertyMetadata.IsBindingAllowed) { // Nothing to do here if binding is not allowed. validationInfo.SkipProperties.Add(propertyName); continue; } if (propertyMetadata.IsBindingRequired) { validationInfo.RequiredProperties.Add(propertyName); } } return(validationInfo); }
internal static PropertyValidationInfo GetPropertyValidationInfo(ModelBindingContext bindingContext) { var validationInfo = new PropertyValidationInfo(); var modelTypeInfo = bindingContext.ModelType.GetTypeInfo(); var typeAttribute = modelTypeInfo.GetCustomAttribute<BindingBehaviorAttribute>(); var properties = bindingContext.ModelType.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var property in properties) { var propertyName = property.Name; var propertyMetadata = bindingContext.PropertyMetadata[propertyName]; var requiredValidator = bindingContext.GetValidators(propertyMetadata) .FirstOrDefault(v => v.IsRequired); if (requiredValidator != null) { validationInfo.RequiredValidators[propertyName] = requiredValidator; } var propertyAttribute = property.GetCustomAttribute<BindingBehaviorAttribute>(); var bindingBehaviorAttribute = propertyAttribute ?? typeAttribute; if (bindingBehaviorAttribute != null) { switch (bindingBehaviorAttribute.Behavior) { case BindingBehavior.Required: validationInfo.RequiredProperties.Add(propertyName); break; case BindingBehavior.Never: validationInfo.SkipProperties.Add(propertyName); break; } } else if (requiredValidator != null) { validationInfo.RequiredProperties.Add(propertyName); } } return validationInfo; }
internal static PropertyValidationInfo GetPropertyValidationInfo(ModelBindingContext bindingContext) { var validationInfo = new PropertyValidationInfo(); var modelTypeInfo = bindingContext.ModelType.GetTypeInfo(); var typeAttribute = modelTypeInfo.GetCustomAttribute<BindingBehaviorAttribute>(); var properties = bindingContext.ModelType.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var property in properties) { var propertyName = property.Name; var propertyMetadata = bindingContext.ModelMetadata.Properties[propertyName]; if (propertyMetadata == null) { // Skip indexer properties and others ModelMetadata ignores. continue; } var validatorProviderContext = new ModelValidatorProviderContext(propertyMetadata); bindingContext.OperationBindingContext.ValidatorProvider.GetValidators(validatorProviderContext); var requiredValidator = validatorProviderContext.Validators .FirstOrDefault(v => v != null && v.IsRequired); if (requiredValidator != null) { validationInfo.RequiredValidators[propertyName] = requiredValidator; } var propertyAttribute = property.GetCustomAttribute<BindingBehaviorAttribute>(); var bindingBehaviorAttribute = propertyAttribute ?? typeAttribute; if (bindingBehaviorAttribute != null) { switch (bindingBehaviorAttribute.Behavior) { case BindingBehavior.Required: validationInfo.RequiredProperties.Add(propertyName); break; case BindingBehavior.Never: validationInfo.SkipProperties.Add(propertyName); break; } } else if (requiredValidator != null) { validationInfo.RequiredProperties.Add(propertyName); } } return validationInfo; }