私はMVC2を使用してサイトを構築し、次のような構造を持っている:デザインの質問
ファクトリー - > Domain.objects - > MVC2
一つの工場がどのアクションの詳細をLOGTYPE、のために列挙型が含まれていますがオブジェクトに適用されています。 ドメインはオブジェクトを要求し、それをMVC2モデルに提供します。これはIEnumerable Ilogとしてビューに渡され、ビューはそのビューを反復処理します。
私の問題は、ビューにログタイプに基づいたリンクを作成したいので、この機能を作成するビューにswitch文があります。 switch文はリポジトリ内でenumを利用していますが、これは私にとっては間違っているようです:リポジトリをビューに公開することです。
ドメイン内のオブジェクトの新しいIListにログタイプをカプセル化する必要がありますか?または、リポジトリでこの列挙型を参照しても問題ありません。
いずれも理想的でない場合、最適な解決策は何ですか?
お手数ですがお手数ですが、
ありがとうダーリン!私はビューモデルが何であるかを誤解していたと思います。私はドメインにアクセスしたビューモデルにいくつかのロジックを置いていました。コントローラがドメインにアクセスし、この情報を特定のビューモデルに渡し、結果をドメインに戻す必要がありますか? –
@ misterjingo、ビューモデルにはビューロジックが含まれていますが、ドメインに直接アクセスすべきではありません。これは、マッピングレイヤーを使用して、ドメインとビューモデルの間のブリッジを作成するコントローラです。これはもう一方の方法としても機能します。コントローラのアクション引数としてビューモデルを受け取ると、コントローラはこのビューモデルをモデルにマップし、モデルを渡してリポジトリを呼び出します。 –
私はこれらの変更を加えて、実際に自分のコードを整理しました。私は最後の質問を1つ持っています。私はオブジェクトを渡すためにインターフェイスを使用します。たとえば、私のドメインはリポジトリ(ユーザ)を呼び出し、IUserオブジェクトを受け取ります(IUserの仕様はrepository.users.interfaceにあります)。ドメインがこのIUser定義を使用するのは問題ないと思います。コントローラやビューにIUserの知識がないようにするために、私はIUserをdomainUserにマッピングし、これをコントローラに渡していました。このマッピングはドメイン内かコントローラ内で行われるべきですか? –