2

ASP.NET MVC 3 でいくつかのカスタム モデル メタデータを実装しようとしています。一部のメタデータは構成された値に基づいて変更される可能性があるため、データ注釈属性を使用できません。そのため、メタデータを設定できるソリューションが必要です。すべてのリクエスト。カスタム モデル メタデータ プロバイダーについて読んでいますが、動的メタデータ シナリオのサポートについては何も見つかりません。

MVC フレームワークは、モデル メタデータ プロバイダーからのメタデータをキャッシュしますか?それとも、すべての要求で CreateMetadata メソッドが呼び出されますか? カスタム モデル メタデータ プロバイダーは、動的メタデータの優れたソリューションですか?それともビュー モデルに配置するだけでよいですか?

編集:これは必ずしも私が話している検証メタデータではないため、検証固有のソリューションを探しているわけではありません。ビューによって表示または使用される単なるメタデータである可能性があります (たとえば、HTML 5 データ属性)。

もう 1 つの例は、データベース主導のフィールド ラベルです。通常、Display 属性の Name プロパティを使用しますが、データベース内の値に基づいて表示名を動的に設定する場合、これは機能しません。

4

1 に答える 1

3

DataAnnotationsModelMetadataProviderすべての基本動作を継承するように、カスタム プロバイダーを派生させることができます。

はい、CreateMetadataすべてのリクエストで呼び出されるため、DB に移動して時間の経過とともに変化する可能性のあるデータをロードするなど、手の込んだことを行うことができます。

ラベルの場合、Db をラベルのソースとして使用するカスタム ResourceProvider を実装します (現在のカルチャ/アカウントなどに基づいて)。例は次のとおりです: http://www.codeproject.com/Articles/14190/ASP-NET-2- 0-カスタム-SQL-Server-ResourceProvider

于 2012-06-27T22:45:05.073 に答える