2010-05-21 4 views
2

Я создаю пользовательский MetadataProvider, и я хотел бы получить доступ к значению модели actall в методе CreateMetadata.ASP.NET MVC Custom MetadataProvider

public class IcpMetadataProvider : AssociatedMetadataProvider 
{ 

    protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName) 
    { 

     var metadata = new ModelMetadata(this, containerType, modelAccessor, modelType, propertyName); 

     //Is null when the model is of reference type 
     var model = metadata.Model; 


     return metadata; 
    } 
} 

Когда текущее значение модели имеет типа строки, значение модели может быть найдено в metadata.Model. Но когда модель имеет ссылочный тип, значение равно null.

Или, может быть, есть способ передать пользовательские данные этому методу?

ответ

1

Цитата: Брэд Уилсон, вам нужно «Назовите base.CreateMetadata, чтобы вы могли получить ModelMetadata, заполненную значениями из DataAnnotations, а затем просто дополнить его значениями из ваших собственных атрибутов».

Ссылка ссылки: http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html