本文整理汇总了C#中System.Web.Http.Metadata.ModelMetadata类的典型用法代码示例。如果您正苦于以下问题:C# ModelMetadata类的具体用法?C# ModelMetadata怎么用?C# ModelMetadata使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ModelMetadata类属于System.Web.Http.Metadata命名空间,在下文中一共展示了ModelMetadata类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Validate
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container)
{
bool propertiesValid = true;
foreach (ModelMetadata propertyMetadata in metadata.Properties)
{
foreach (ModelValidator propertyValidator in propertyMetadata.GetValidators(ValidatorProviders))
{
foreach (ModelValidationResult propertyResult in propertyValidator.Validate(metadata, container))
{
propertiesValid = false;
yield return new ModelValidationResult
{
MemberName = ModelBindingHelper.CreatePropertyModelName(propertyMetadata.PropertyName, propertyResult.MemberName),
Message = propertyResult.Message
};
}
}
}
if (propertiesValid)
{
foreach (ModelValidator typeValidator in metadata.GetValidators(ValidatorProviders))
{
foreach (ModelValidationResult typeResult in typeValidator.Validate(metadata, container))
{
yield return typeResult;
}
}
}
}
开发者ID:KevMoore,项目名称:aspnetwebstack,代码行数:31,代码来源:ModelValidator.cs
示例2: GetValidators
public IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata)
{
// If metadata is for a property then containerType != null && propertyName != null
// If metadata is for a type then containerType == null && propertyName == null, so we have to use modelType for the cache key.
Type typeForCache = metadata.ContainerType ?? metadata.ModelType;
Tuple<Type, string> cacheKey = Tuple.Create(typeForCache, metadata.PropertyName);
ModelValidator[] validators;
if (!TryGetValue(cacheKey, out validators))
{
_cacheLock.EnterWriteLock();
try
{
// Check the cache again in case the value was computed and added to the cache while we were waiting on the write lock
if (!_validatorCache.TryGetValue(cacheKey, out validators))
{
// Compute validators
validators = metadata.GetValidators(_validatorProviders.Value).ToArray();
_validatorCache.Add(cacheKey, validators);
}
}
finally
{
_cacheLock.ExitWriteLock();
}
}
return validators;
}
开发者ID:chrissimon-au,项目名称:aspnetwebstack,代码行数:28,代码来源:ModelValidatorCache.cs
示例3: Validate
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container)
{
if (metadata.Model != null)
{
var selector = _customizations.ToValidatorSelector();
//var interceptor = _customizations.GetInterceptor() ?? (_validator as IValidatorInterceptor);
var context = new ValidationContext(metadata.Model, new PropertyChain(), selector);
//if (interceptor != null)
//{
// // Allow the user to provide a customized context
// // However, if they return null then just use the original context.
// context = interceptor.BeforeMvcValidation(ControllerContext, context) ?? context;
//}
var result = _validator.Validate(context);
//if (interceptor != null)
//{
// // allow the user to provice a custom collection of failures, which could be empty.
// // However, if they return null then use the original collection of failures.
// result = interceptor.AfterMvcValidation(ControllerContext, context, result) ?? result;
//}
if (!result.IsValid)
{
return ConvertValidationResultToModelValidationResults(result);
}
}
return Enumerable.Empty<ModelValidationResult>();
}
开发者ID:danludwig,项目名称:danludwig,代码行数:31,代码来源:FluentValidationHttpModelValidator.cs
示例4: DefaultValues
public void DefaultValues()
{
// Arrange
Mock<ModelMetadataProvider> provider = new Mock<ModelMetadataProvider>();
// Act
ModelMetadata metadata = new ModelMetadata(provider.Object, typeof(Exception), () => "model", typeof(string), "propertyName");
// Assert
Assert.Equal(typeof(Exception), metadata.ContainerType);
Assert.True(metadata.ConvertEmptyStringToNull);
Assert.Null(metadata.DataTypeName);
Assert.Null(metadata.Description);
Assert.Null(metadata.DisplayFormatString);
Assert.Null(metadata.DisplayName);
Assert.Null(metadata.EditFormatString);
Assert.False(metadata.HideSurroundingHtml);
Assert.Equal("model", metadata.Model);
Assert.Equal(typeof(string), metadata.ModelType);
Assert.Null(metadata.NullDisplayText);
Assert.Equal(10000, metadata.Order);
Assert.Equal("propertyName", metadata.PropertyName);
Assert.False(metadata.IsReadOnly);
Assert.True(metadata.RequestValidationEnabled);
Assert.Null(metadata.ShortDisplayName);
Assert.True(metadata.ShowForDisplay);
Assert.True(metadata.ShowForEdit);
Assert.Null(metadata.TemplateHint);
Assert.Null(metadata.Watermark);
}
开发者ID:haoduotnt,项目名称:aspnetwebstack,代码行数:30,代码来源:ModelMetadataTest.cs
示例5: GetValidators
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, IEnumerable<ModelValidatorProvider> validatorProviders, IEnumerable<Attribute> attributes)
{
List<ModelValidator> results = new List<ModelValidator>();
// Produce a validator for each validation attribute we find
foreach (ValidationAttribute attribute in attributes.OfType<ValidationAttribute>())
{
DataAnnotationsModelValidationFactory factory;
if (!AttributeFactories.TryGetValue(attribute.GetType(), out factory))
{
factory = DefaultAttributeFactory;
}
results.Add(factory(metadata, validatorProviders, attribute));
}
// Produce a validator if the type supports IValidatableObject
if (typeof(IValidatableObject).IsAssignableFrom(metadata.ModelType))
{
DataAnnotationsValidatableObjectAdapterFactory factory;
if (!ValidatableFactories.TryGetValue(metadata.ModelType, out factory))
{
factory = DefaultValidatableFactory;
}
results.Add(factory(metadata, validatorProviders));
}
return results;
}
开发者ID:haoduotnt,项目名称:aspnetwebstack,代码行数:28,代码来源:DataAnnotationsModelValidatorProvider.cs
示例6: Validate
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container)
{
if (metadata.Model is string)
{
var dirty = (string) metadata.Model;
var sanitized = Sanitizer.GetSafeHtmlFragment(dirty);
if (!dirty.Equals(sanitized))
{
// Revert HTML encoded special characters
sanitized = sanitized.Replace("<", "<");
sanitized = sanitized.Replace(">", ">");
sanitized = sanitized.Replace("&", "&");
sanitized = sanitized.Replace(""", "\"");
if (!dirty.Equals(sanitized))
{
yield return new ModelValidationResult
{
MemberName = string.Empty,
Message = "A potentially dangerous value was detected from the client."
};
}
}
}
}
开发者ID:rmichela,项目名称:WebApiXss,代码行数:25,代码来源:AntiXssModelValidator.cs
示例7: Validate
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container)
{
if (metadata.Model is string)
{
return ValidateString((string)metadata.Model, metadata.PropertyName);
}
return Enumerable.Empty<ModelValidationResult>();
}
开发者ID:rmichela,项目名称:WebApiXss,代码行数:8,代码来源:AspNetXssModelValidator.cs
示例8: GetValidators
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, IEnumerable<ModelValidatorProvider> validatorProviders)
{
if (IsValidatingProperty(metadata))
{
return GetValidatorsForProperty(metadata, validatorProviders, ValidatorFactory.GetValidator(metadata.ContainerType));
}
return GetValidatorsForModel(
//metadata,
validatorProviders, ValidatorFactory.GetValidator(metadata.ModelType));
}
开发者ID:danludwig,项目名称:danludwig,代码行数:10,代码来源:FluentValidationHttpModelValidatorProvider.cs
示例9: GetValidators
/// <summary>
/// Gets the collection of registered <see cref="ModelValidator"/> instances.
/// </summary>
/// <param name="actionContext">The context.</param>
/// <param name="metadata">The metadata.</param>
/// <returns>A collection of registered <see cref="ModelValidator"/> instances.</returns>
public static IEnumerable<ModelValidator> GetValidators(this HttpActionContext actionContext, ModelMetadata metadata)
{
if (actionContext == null)
{
throw Error.ArgumentNull("actionContext");
}
IEnumerable<ModelValidatorProvider> validatorProviders = GetValidatorProviders(actionContext);
return validatorProviders.SelectMany(provider => provider.GetValidators(metadata, validatorProviders));
}
开发者ID:JokerMisfits,项目名称:linux-packaging-mono,代码行数:16,代码来源:HttpActionContextExtensions.cs
示例10: GetValidators
/// <summary>
/// Gets the validators.
/// </summary>
/// <param name="metadata">The metadata.</param>
/// <param name="validatorProviders">The validator providers.</param>
/// <returns>
/// The validators returned by the default validator providers.
/// </returns>
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, IEnumerable<ModelValidatorProvider> validatorProviders)
{
var validators = this.defaultModelValidatorProviders.SelectMany(provider => provider.GetValidators(metadata, validatorProviders)).ToList();
foreach (var modelValidator in validators)
{
this.kernel.Inject(modelValidator);
}
return validators;
}
开发者ID:remogloor,项目名称:Ninject.Web.WebApi,代码行数:18,代码来源:NinjectDefaultModelValidatorProvider.cs
示例11: TypeConversionErrorMessageProvider_DefaultValue
public void TypeConversionErrorMessageProvider_DefaultValue()
{
// Arrange
ModelMetadata metadata = new ModelMetadata(new Mock<ModelMetadataProvider>().Object, null, null, typeof(int), "SomePropertyName");
// Act
string errorString = ModelBinderConfig.TypeConversionErrorMessageProvider(null, metadata, "some incoming value");
// Assert
Assert.Equal("The value 'some incoming value' is not valid for SomePropertyName.", errorString);
}
开发者ID:haoduotnt,项目名称:aspnetwebstack,代码行数:11,代码来源:ModelBinderConfigTest.cs
示例12: GetValidators
/// <summary>
/// Gets a list of validators.
/// </summary>
/// <param name="metadata">The metadata.</param>
/// <param name="actionContext">The context.</param>
/// <param name="attributes">The list of validation attributes.</param>
/// <returns>A list of validators.</returns>
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, HttpActionContext actionContext, IEnumerable<Attribute> attributes)
{
var validators = base.GetValidators(metadata, actionContext, attributes);
foreach (var modelValidator in validators.OfType<DataAnnotationsModelValidator>())
{
var attribute = this.getAttributeMethodInfo.Invoke(modelValidator, new object[0]);
this.kernel.Inject(attribute);
}
return validators;
}
开发者ID:pseabury,项目名称:Ninject.Web.WebApi,代码行数:18,代码来源:NinjectDataAnnotationsModelValidatorProvider.cs
示例13: Validate
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container) {
if (metadata.Model == null) return Enumerable.Empty<ModelValidationResult>();
var selector = new DefaultValidatorSelector();
var context = new ValidationContext(metadata.Model, new PropertyChain(), selector);
var result = validator.Validate(context);
return !result.IsValid
? ConvertValidationResultToModelValidationResults(result)
: Enumerable.Empty<ModelValidationResult>();
}
开发者ID:maca88,项目名称:FluentValidation.WebApi2,代码行数:11,代码来源:FluentValidationModelValidator.cs
示例14: ValueRequiredErrorMessageProvider_DefaultValue
public void ValueRequiredErrorMessageProvider_DefaultValue()
{
// Arrange
ModelMetadata metadata = new ModelMetadata(new Mock<ModelMetadataProvider>().Object, null, null, typeof(int), "SomePropertyName");
// Act
string errorString = ModelBinderConfig.ValueRequiredErrorMessageProvider(null, metadata, "some incoming value");
// Assert
Assert.Equal("A value is required.", errorString);
}
开发者ID:Vizzini,项目名称:aspnetwebstack,代码行数:11,代码来源:ModelBinderConfigTest.cs
示例15: GetValidatorsForProperty
private IEnumerable<ModelValidator> GetValidatorsForProperty(ModelMetadata metadata, IEnumerable<ModelValidatorProvider> validatorProviders)
{
ICustomTypeDescriptor typeDescriptor = GetTypeDescriptor(metadata.ContainerType);
PropertyDescriptor property = typeDescriptor.GetProperties().Find(metadata.PropertyName, true);
if (property == null)
{
throw Error.Argument("metadata", SRResources.Common_PropertyNotFound, metadata.ContainerType, metadata.PropertyName);
}
return GetValidators(metadata, validatorProviders, property.Attributes.OfType<Attribute>());
}
开发者ID:KevMoore,项目名称:aspnetwebstack,代码行数:11,代码来源:AssociatedValidatorProvider.cs
示例16: GetValidators
public ModelValidator[] GetValidators(ModelMetadata metadata)
{
ModelValidator[] validators;
if (!_validatorCache.TryGetValue(metadata.CacheKey, out validators))
{
// Compute validators
// There are no side-effects if the same validators are created more than once
validators = metadata.GetValidators(_validatorProviders.Value).ToArray();
_validatorCache.TryAdd(metadata.CacheKey, validators);
}
return validators;
}
开发者ID:huangw-t,项目名称:aspnetwebstack,代码行数:12,代码来源:ModelValidatorCache.cs
示例17: ValidateProperties
private static bool ValidateProperties(ModelMetadata metadata, ValidationContext validationContext, string prefix)
{
bool isValid = true;
foreach (ModelMetadata childMetadata in metadata.Properties)
{
string childPrefix = ModelBindingHelper.CreatePropertyModelName(prefix, childMetadata.PropertyName);
if (!ValidateNodeAndChildren(childMetadata, validationContext, metadata.Model, childPrefix))
{
isValid = false;
}
}
return isValid;
}
开发者ID:haoduotnt,项目名称:aspnetwebstack,代码行数:13,代码来源:DefaultBodyModelValidator.cs
示例18: Validate
public override IEnumerable<ModelValidationResult> Validate(ModelMetadata metadata, object container) {
if (metadata.Model != null) {
var selector = ValidatorOptions.ValidatorSelectors.DefaultValidatorSelectorFactory();
var context = new ValidationContext(metadata.Model, new PropertyChain(), selector);
var result = validator.Validate(context);
if (!result.IsValid) {
return ConvertValidationResultToModelValidationResults(result);
}
}
return Enumerable.Empty<ModelValidationResult>();
}
开发者ID:calebjenkins,项目名称:FluentValidation,代码行数:13,代码来源:FluentValidationModelValidator.cs
示例19: GetValidators
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, IEnumerable<ModelValidatorProvider> validatorProviders)
{
string propertyName = metadata.PropertyName;
// if we're validating a property and not a type
if (propertyName != null)
{
PropertyInfo metadataProperty = metadata.ContainerType.GetProperty(propertyName);
if (_requiredMemberSelector.IsRequiredMember(metadataProperty))
{
return new ModelValidator[] { new RequiredMemberModelValidator(validatorProviders) };
}
}
return new ModelValidator[0];
}
开发者ID:chrissimon-au,项目名称:aspnetwebstack,代码行数:14,代码来源:RequiredMemberModelValidatorProvider.cs
示例20: GetValidators
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, IEnumerable<ModelValidatorProvider> validatorProviders, IEnumerable<Attribute> attributes)
{
DataMemberAttribute dataMemberAttribute = attributes.OfType<DataMemberAttribute>().FirstOrDefault();
if (dataMemberAttribute != null)
{
// isDataContract == true iff the containter type has at least one DataContractAttribute
bool isDataContract = GetTypeDescriptor(metadata.ContainerType).GetAttributes().OfType<DataContractAttribute>().Any();
if (isDataContract && dataMemberAttribute.IsRequired)
{
return new[] { new RequiredMemberModelValidator(validatorProviders) };
}
}
return new ModelValidator[0];
}
开发者ID:JokerMisfits,项目名称:linux-packaging-mono,代码行数:14,代码来源:DataMemberModelValidatorProvider.cs
注:本文中的System.Web.Http.Metadata.ModelMetadata类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论