この例の「ルックアップ」IList<string>
は州の略語です。通常、ドメイン モデル POCO にはこれらのオプションは含まれません。ViewModel は通常、元のドメイン モデルと Lookup オブジェクトの両方を参照してこの責任を負いますが、ドメイン モデルがネストされていて、MVC テンプレートを使用している場合はどうなりますか (元のモデルのルート プロパティにアクセスできないでしょうか?
テンプレートの 1 つのオブジェクトにルックアップを含め、別のオブジェクトにモデルを含める方法はありますか? ビュー内のそのテンプレートに固有のビューモデルをオンザフライでアセンブルすることは許可されていますか (そこからネストされたデータを含める必要があります)。ルックアップ値をプルダウンする静的メソッドは悪いと思います。
何か案は?
注(私の知る限り):
リポジトリのドメイン モデル POCO の構造は変わりません。たとえば、1 つのモデルに Customer オブジェクトと米国州の DDL オプションの両方が必要な場合、通常、Customer オブジェクトと Customer Lookup リストを参照する ViewModel があります。
ただし、ネストされたドメイン モデル (集約ルート) がある場合、ネストされたオブジェクトにはルックアップ リストを配置する場所がなく、MVC テンプレートはルート レベルのビュー モデル (ビュー モデルは部分モデル) にアクセスできません。
編集:
ViewModel のルート レベルに DDL リストを配置し、Customer オブジェクトに到達したら、ルート レベルの DDL リストと現在の Customer オブジェクトを参照してテンプレートに送信する新しい ViewModel を作成する方法はありますか? これにより、モデル内の重複データが排除され、すべてのビューに対して単一のモデルが使用されます。唯一の悪い点は、ビュー内のコントローラーのようなデータ アセンブリ コードです (これも同様に悪いことです)。