Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Web/CustomModelMetadataProvider/DataAnnotationAndConventionModelMetadataProvider.cs @ 119:8fa58a79656a
Historico
author | Nelo@Kenia.neluz.int |
---|---|
date | Wed, 22 Jun 2011 09:49:07 -0300 |
parents | 8a4135f019dd |
children | c57ca21064f2 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web.Mvc; namespace AltNetHispano.Agendas.Web.CustomModelMetadataProvider { public class DataAnnotationAndConventionModelMetadataProvider : DataAnnotationsModelMetadataProvider { private readonly IResolverByConvention _resolverByConvention; private List<Attribute> _attributeList; public DataAnnotationAndConventionModelMetadataProvider(IResolverByConvention resolverByConvention) { _resolverByConvention = resolverByConvention; } protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName) { _attributeList = new List<Attribute>(attributes); var modelMetadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName); if (propertyName != null) { if (string.IsNullOrWhiteSpace(modelMetadata.DisplayName)) modelMetadata.DisplayName = _resolverByConvention.GetDisplayName(propertyName); if (string.IsNullOrWhiteSpace(modelMetadata.Description)) modelMetadata.Description = _resolverByConvention.GetDescription(propertyName); var validators = _attributeList.OfType<ValidationAttribute>(); foreach (var validator in validators) { if (string.IsNullOrWhiteSpace(validator.ErrorMessage) && string.IsNullOrWhiteSpace(validator.ErrorMessageResourceName)) { var resourceName = propertyName + validator.GetType().Name; if (resourceName.EndsWith("Attribute")) resourceName = resourceName.Substring(0, resourceName.Length - 9); var resourceType = validator.ErrorMessageResourceType ?? _resolverByConvention.ResourceType; var prop = resourceType.GetProperty(resourceName); if (prop != null) { validator.ErrorMessageResourceType = resourceType; validator.ErrorMessageResourceName = resourceName; } } } } return modelMetadata; } } }