ASP.MVC CachedDataAnnotationsModelMetadataProvider не поддерживает дополнительные значения - PullRequest
0 голосов
/ 15 февраля 2012

Я пытаюсь использовать модифицированный MetadataProvider на основе CachedDataAnnotationsModelMetadataProvider. В своих пользовательских метаданных я предоставляю данные в словарь дополнительных значений. Когда я смотрю на кэш из провайдера, он правильно заполняется объектами ModelMetadata, и эти объекты правильно заполняются дополнительными значениями.

В моем обычном провайдере я переопределяю:

CreateMetadataPrototype(IEnumerable<Attribute> attributes, Type containerType, Type modelType, string propertyName)

и я устанавливаю значения в провайдере с помощью метода add в словаре.

Однако, когда я получаю доступ к ModelMetadata из представления, дополнительные данные больше не заполняются.

Другие свойства в ModelMetadata заполняются, но словарь дополнительных данных - нет.

Если я переключу пользовательский поставщик метаданных на использование стандартного поставщика метаданных DataAnnotations вместо поставщика кэширования, дополнительные значения будут правильно заполнены.

Когда я углубляюсь в код MVC, кажется, что метод

CachedDataAnnotationsModelMetadata CreateMetadataFromPrototype(CachedDataAnnotationsModelMetadata prototype, Func<object> modelAccessor) 

не полностью заполняет возвращаемый объект CachedDataAnnotationsModelMetadata.

Я исправляю это, переопределяя метод, но это кажется немного странным и наводит меня на мысль, что я неправильно использую провайдер Cached.

Так есть ли другой предпочтительный способ обработки ModelMetadata в кэшированном провайдере?

1 Ответ

2 голосов
/ 04 марта 2012

использование CreateMetadataFromPrototype() insted из CreateMetadataPrototype()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...