UI が ViewModel に強く型付けされている MVC 4 プロジェクトがあります。ビューには、特定のシナリオで表示する必要がある特定の要素があります。これらのシナリオはビジネス ロジックによって管理されるため、UI にこのような条件ステートメントを含めたくありません。
If (Role.Equals(“Admin”))
{
<a href=””> Admin Link here</a>
}
私が持っているのは、ビジネスレイヤーがビューモデルを作成することです。したがって、上記のステートメントは、以下のようにビジネスレイヤーにあります
If (Role.Equals(“Admin”))
{
ViewModelClassObject.ShowAdminLinks = true;
}
そして、以下のように私のUI .aspxレイヤーで
If (model.ShowAdminLinks)
{
<a href=””> Admin Link here</a>
}
問題はこれです。ビューモデル クラスは別のクラス ライブラリにあり、ビジネス UI レイヤーと Web UI レイヤーの両方から参照されます。ビューモデル クラスには、必要なフィールド バリデーター、比較、範囲バリデーターなどのいくつかの検証を実行する UI レイヤーのテキスト ボックスにマップするプロパティもあるため、ViewModel クラスで System.web.mvc レイヤーへの参照を作成する必要があります。図書館。これは悪いコーディング方法ですか? コードはコンパイルおよびビルドされますが、おそらくコードのにおいがするようなことをしているような気がします。または、ViewModel クラスを Web UI レイヤーに戻し、Web プロジェクトである種のビューモデル ビルダーを使用して、ビジネス レイヤー メソッドを呼び出してビュー モデルを作成することも検討しています。
これについてどう思いますか?