private static void SetupRequiredValidator(ModelMetadataItem property)
        {
            var requiredValidator = property.GetValidationOrCreateNew<RequiredValidationMetadata>();

            // check that message is not localized yet
            if (requiredValidator.ErrorMessage == null && requiredValidator.ErrorMessageResourceType == null)
            {
                requiredValidator.ErrorMessage = () => ValidationResources.PropertyValueRequired;
            }
        }
        private static ModelValidationMetadata CreateRangeValidator(ModelMetadataItem property, RangeAttribute rangeAttribute)
        {
            object min = rangeAttribute.Minimum;
            object max = rangeAttribute.Maximum;

            // Check all numeric types, no other way found
            ModelValidationMetadata extValidator = null;
            if (min is int)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<int>>();
            else if (min is sbyte)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<sbyte>>();
            else if (min is short)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<short>>();
            else if (min is long)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<long>>();
            else if (min is uint)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<uint>>();
            else if (min is byte)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<byte>>();
            else if (min is ushort)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<ushort>>();
            else if (min is ulong)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<ulong>>();
            else if (min is float)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<float>>();
            else if (min is double)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<double>>();
            else if (min is decimal)
                extValidator = property.GetValidationOrCreateNew<RangeValidationMetadata<decimal>>();

            if (extValidator != null)
            {
                if (rangeAttribute.ErrorMessageResourceType != null)
                {
                    extValidator.ErrorMessageResourceType = rangeAttribute.ErrorMessageResourceType;
                    extValidator.ErrorMessageResourceName = rangeAttribute.ErrorMessageResourceName;
                }
            }

            return extValidator;
        }
 private static void SetupDataTypeValidator(ModelMetadataItem property)
 {
     var typeValidator = property.GetValidationOrCreateNew<CustomValidationMetadata<DataTypeModelValidator>>();
     typeValidator.Factory = (metadata, context) => new DataTypeModelValidator(metadata, context);
     typeValidator.Configure = v => DataTypeModelValidator.Configure(v);
 }