CachedDataAnnotationsModelMetadataProviderに基づいて変更されたMetadataProviderを使用しようとしています。カスタムメタデータ内では、データを追加値辞書に提供します。プロバイダ内からキャッシュを見ると、ModelMetadataオブジェクトが正しく挿入され、これらのオブジェクトに追加の値が正しく設定されます。ASP.MVC CachedDataAnnotationsModelMetadataProviderが追加の値を保持しない
私のカスタムプロバイダの中で、私はオーバーライドしています:
CreateMetadataPrototype(IEnumerable<Attribute> attributes, Type containerType, Type modelType, string propertyName)
と私は辞書にaddメソッドを通じてプロバイダー内の値を設定していますが。
ただし、ビューからModelMetadataにアクセスすると、追加データにデータが読み込まれなくなります。 ModelMetadata内の他のプロパティが設定されますが、追加のデータ辞書は作成されません。キャッシュプロバイダの代わりに標準のDataAnnotationsメタデータプロバイダを使用するようにカスタムメタデータプロバイダを切り替えると、追加の値が適切に設定されます。
私はMVCコードにドリルダウンするときの方法CachedDataAnnotationsModelMetadata CreateMetadataFromPrototype(CachedDataAnnotationsModelMetadataプロトタイプ、のFunc modelAccessor)が完全に戻りCachedDataAnnotationsModelMetadataオブジェクトを移入しないかのように、それが表示されます。私はメソッドをオーバーライドしてこれを修正しますが、これはちょっと変わったように見えます。キャッシュされたプロバイダを間違って使用していると私は信じています。だから、キャッシュされたプロバイダでModelMetadataを扱うための別の方法がありますか?
のコードinsted?.......... –