2009-10-07 25 views
6

標準のWebフォームASP.NETソリューションでは、通常、マスタページ内にさまざまなユーザーコントロールがあり、コード内に表示するかどうかを決定します。同じ目標を達成するためにASP.NET MVC内で最善のアプローチは何ですか?ASP.NET MVCで部分ビューの条件付き表示を制御する方法

if文をマスターページまたは部分ビューに明示的に入れることはできますが、それは私を厄介なものにしてしまい、ビジネスロジックをビューから外すという原則を破ります。また、必要な情報をすべてのビューモデルに入れたり、ベースコントローラから継承したりする必要があります。

RenderActionを使用し、出力を防ぐために完全に空白のビューを返すことを考えていました。それは良いパターンですか?

答えて

3

それは、ビジネスロジックではありませんビュー

のうち、ビジネスロジックを維持する原則を破ります。何かを表示するかどうかを決定するときは、プレゼンテーションロジックです。そこに置いても大丈夫です。

モデルを表示するかどうかを決定し、モデルにいくつかのフラグを設定することができます(たとえば、BaseModelまたはMasterModelを作成できます)。次に、マスタービュー、部分ビュー自体、またはHTMLヘルパーは、これらのフラグに基づいて条件付きレンダリングを実行します。

WebFormsは明らかに問題を分けることができましたが、WebFormsはそのように見えるかもしれませんが、根本的なメカニズムのかなり大きな抽象化でした。ビジネスロジックがコードビハインド、つまり、ビジネスロジックがビューに属しているだけではないプレゼンテーション層でビジネスロジックを持つことがよくあります。

+1

を乱雑を避けることができます。 "RenderPartialIfNotNull(" Foo "、Model.Something)"の呼び出しがたくさんあります。 –

+0

申し訳ありません、はい、UIロジックはビジネスロジックではありませんでした –

関連する問題