ラベルとエラー メッセージを動的に制御できるようにするために、カスタム を作成しましたDataAnnotationsModelMetadataProvider
。属性では、プロパティDisplay
にキーを保存し、カスタムを使用して、カスタム CMS からの文字列値をキーに置き換えます。問題は、2 つの値のセットがあることです。1 つは Web ビュー用で、もう 1 つはモバイル ビュー用です。実行時に、クライアントがモバイル デバイス上にあるかどうかを確認し、それに応じて値を置き換えます。Name
DataAnnotationsModelMetadataProvider
このセットアップをテスト実行した後、奇妙な問題に遭遇しました。がAppDomain
最初に作成されName
、さまざまなデータ注釈のプロパティが文字列値に置き換えられると、すべて正常に機能します。デバッグでカスタムDataAnnotationsModelMetadataProvider
を 2 回目に入力すると、名前のプロパティには、前回の実行で置き換えた値が既に入力されていることがわかります。データ注釈のプロパティは実行時に変更できないことを理解していたので、これは私にとって奇妙でした。モデル メタデータ キャッシュがどこかで発生しているようです。が呼び出されるたびに値を置き換えるカスタム ソリューションに基づいているためDataAnnotationsModelMetadataProvider
、可能であればこのキャッシュを無効にしたいと考えています。
今のところ、ShortName
プロパティをキー格納プロパティとして使用し始め、プロパティを置き換えましたName
。このようにして、実行ごとに文字列を再設定できます。しかし、これは初期の設計ではなく、 のようなキー ストア プロパティはありませんValidationAttributes
。
このキャッシュを無効にする方法はありますか? いずれにせよ、すべての CMS データは別のレイヤーのメモリにキャッシュされるため、キャッシュのためにキャッシュは必要ありません。