2013-04-16 9 views
6

私はアプリケーションのために、フォルダ構造内にグループ化できる多くの部分ビューを潜在的に持っています。私はこれをしなければならないと思われます。だから私は次のようなものを持っているはずです:ファイル構造内でパーシャルビューを整理する最良の方法は何ですか?

Views -> 
    Group1 -> 
    PartialView1 
    PartialView2 

HTML.Partial呼び出しはどのように見えますか?

HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model) 

私が持っていたもう一つのアイデアは、条件付きコードブロックでの1つの部分ビューファイルを持っていることでしたが、私は、これはPartialViewsが約あるすべてのものに反する疑いがあります。

最後に、小さな部分ビューが多数あり、複数の条件付きコンポーネントがある1つの大きな部分ビューがある場合は、パフォーマンスに違いがありますか?私は、複数の小さなファイルのロードとは対照的に、あるファイルがメモリにロードされ、コンパイルがコード化されると考えていると思います。

ありがとうございました。

編集:詳細

レポートのさまざまな部分をレンダリングするために使用する汎用コントローラがあるため、「概要」の章のすべてのセクションは、「Introduction.Section1」、「Introduction.Section2」、 。私のシナリオでは、私は章全体で共通のセクションがあるとは思わないので、私は "ファイル"と一緒に行くことができました。アイデアだが、Viewsフォルダが大きいので、なぜサブフォルダの使用を検討しているのだろうか。

編集:ありがとうございます。いくつかの素晴らしいアイデアがここにあります。私はこのアプローチを他の場所で使用しているので、最後にフォルダのアイデアを出しました。しかし、私は絶対パスを使用する必要があることを認識していますが、これは問題ではありません。あなたが好きな命名規則親子ファイルを使用することができ

+1

実際のモデルタイプごとにエディタ/ディスプレイテンプレートを調べましたか?パーシャルビューの名前を手動で入力する必要はなく、システム全体でモデルタイプにビューをリンクすることができます。 (http://stackoverflow.com/a/5497234/1373170) –

答えて

3

どこかのViewsディレクトリにいる限り、それは本当に重要ではありません。 Views/{controller}またはViews/Shared以外の場所に設置する場合は、Viewsと拡張子を含む完全修飾ロケーションが必要です(@Html.Partial("~/Views/Group1/PartialView1.cshtml"))。

個人的には、1つのコントローラで使用される部分的な部分がたくさんある場合は、{controller-name}ディレクトリに@IyaTaishoのように先頭のアンダースコアを付けておきます。しかし、それらが複数のコントローラで使用されていて、それらをグループ化する必要がある場合、それらをViews/Shared/{groupName}の下にグループ化します。

1つの大きな部分と多くの小さな部分について、私は小さなものと一緒に行くと言うでしょう。今、大きなことをする理由があるかもしれませんが、一般的には、部分的なものはできるだけシンプルでなければなりません。常にネストされた部分集合を持つことができるので、多くの部分集合の中で機能やレイアウトを共有している場合は、その部分を親部分部分と多くの子部分部分に分割することができます。

+0

ありがとうございます。実際には、レポートのさまざまな部分をレンダリングするために使用するジェネリックコントローラがあるため、「紹介」の章のすべてのセクションは、「Introduction.Section1」、「Introduction.Section2」という「Introduction」部分を使ってレンダリングされます。私のシナリオでは、私は章全体で共通のセクションがあるとは思わないので、私は "ファイル"と一緒に行くことができました。アイデアだが、Viewsフォルダが大きいので、なぜサブフォルダの使用を検討しているのだろうか。 – SamJolly

5

header.html 
header.login.html 
header.searchbar.html 

あなたも、さらに一歩それを取ることができます:

contact.helpdesk.html 
contact.office.html 

再使用してパーシャルを、はるかに少ない頻繁ユニークパーシャルよりだからあなたは再利用パーシャルのための規約を使うことができます:

  • 制限は大きなファイルディレクトリです。

  • ベニフィッツは、スキムを取りやすく、分類が容易です。

+0

興味深い考え。 MVC3に関しては、これは同じ目的、つまりHeader \ header.html、Header \ Login.html、Header \ SearchBar.htmlのフォルダを持つ方が望ましいと思いますか? – SamJolly

+0

+1このアプローチが好きですが、何か欠点がありますか? –

+1

@SamJollyあなたは心を失うかもしれません。また、この場合の親はフォルダではなくファイル自体です。親には部分的です。 –

5

通常、部分的に_の前に_を付け加えます。例には、Home.cshtmlと呼ばれるメインビューがあります。ページの部分(部分)には、_header.cshtml、_footer.cshtmlなどのようなものがあります。

+0

ありがとうございます。はい、「_」アプローチを認識しています。問題は部分的なものを区別するのではなく、多数の異なる部分的な部分を組織する方法です。 – SamJolly

+0

ああ、そうです。私も同様の問題があります。私は現在のプロジェクトで大量のものを継承しました。今のところ、私はそれを扱うことがより容易であった(部分的な見解と見解を混合する)ために、そのままにしました。私はほとんど彼らのためのフォルダを作ることを示唆するだろうが、同時に私はよくわからない。申し訳ありませんが、私はもうそれ以上の助けにはなりません。 – IyaTaisho

関連する問題