private static ModelMetadata GetMetadataFromProvider( Func <object> modelAccessor, Type modelType, string propertyName, object container, Type containerType, ModelMetadataProvider metadataProvider ) { metadataProvider = metadataProvider ?? ModelMetadataProviders.Current; if (containerType != null && !String.IsNullOrEmpty(propertyName)) { ModelMetadata metadata = metadataProvider.GetMetadataForProperty( modelAccessor, containerType, propertyName ); if (metadata != null) { metadata.Container = container; } return(metadata); } return(metadataProvider.GetMetadataForType(modelAccessor, modelType)); }