2012-03-06 7 views
0

同じアクションで別のURLのためにレイアウトを適用しますとURL。どのように私は3つのアクションを持つ3つのコントローラを持っている

まず私はRenderPartialを使用 - しかし、それはまだ(主にアクションで)コードの重複がたくさんあります。例えば一つだけのコントローラと形作るルートを作成するので、異なるURLにとっての選択肢の右レイアウト -

は、だから私は、これを避けるために、何らかの方法でほしいです。

答えて

1

どのようにコントローラがレイアウトを定義しますか?これは悪い習慣です。 VIEWレイヤーはレイアウトを定義するためのものです。

各ビューファイルは

@{ 
    Layout = "path/to/your/layout.cshtml"; 
} 

でデフォルトの共有レイアウトのファイルを上書きすることができますし、例えばViewBagで動的にその価値を提供することができます。

+0

(各コントローラのビューのは同じです - 今、私はこれを取り除くためにしてみてください) - ので、全体的に、私は3x3の景色を眺めることができます。ビューでは、私が説明したように、レイアウトを定義します。 私が理解しているように - 最良のアプローチは、コントローラがURLから必要なレイアウトを見つけて、それをビューに渡すことです。 –

+0

私はそれをURLに入れないでしょう、私はむしろプロフィールまたはクッキーに選択したレイアウトを保存したいと思います。なぜそれをURLに保存したいのですか? – torm

+0

私はこれらのURL "site.net/en/Controller1/List/"、 "site.net/en/Controller2/List/"を使用しているので、結果は同じコンテンツでなければなりませんが、レイアウトは異なります。今、私は、これらの要求を1つのコントローラにルーティングして、レイアウトを設定できるようにしたいと思います。 –

0

あなたは、コントローラによって使用されるべき表示ファイルを、指定することができます。

return View("~/Views/Posts/Index.cshtml", db.Posts.ToList()) 

この方法で、異なるコントローラメソッドに同じテンプレートを使用できます。私は、ビューの独自のセットを持って、各コントローラの

関連する問題