大規模なASP.NET-MVCプロジェクトがあり、共有 View フォルダーに多数のファイルがあります。
これらのファイル ( Views ) をグループ化して、理解しやすくしたいと考えています。同じ問題があると思われるこのブログ投稿を見ましたが、ソリューションに追加の依存関係/ dllを避けたいと思います。
とにかく、外部依存関係なしでShared Views ディレクトリを整理する方法はありますか? aspx View Engineを使用しています ( Razorではありません)
大規模なASP.NET-MVCプロジェクトがあり、共有 View フォルダーに多数のファイルがあります。
これらのファイル ( Views ) をグループ化して、理解しやすくしたいと考えています。同じ問題があると思われるこのブログ投稿を見ましたが、ソリューションに追加の依存関係/ dllを避けたいと思います。
とにかく、外部依存関係なしでShared Views ディレクトリを整理する方法はありますか? aspx View Engineを使用しています ( Razorではありません)
ASP.NET MVC では、共有は複数の方法で機能します。
1) コントローラのビュー フォルダを使用します。
はい、View Engine は常に部分ビューの共有フォルダをチェックします。ただし、共有フォルダをチェックする前に、View Engine は「アクティブな」フォルダをチェックします。
より詳細に説明するために、 HomeController を使用して " Home " ビュー フォルダーにビューをレンダリングし、"NavPartial" という部分ビューをレンダリングしているシナリオを取り上げます。部分ビューの「共有」フォルダをチェックする前に、ビュー エンジンは「ホーム」ビュー フォルダを最初にチェックします。
これは、コントローラー内でパーシャルを再利用する必要がある場合、そのコントローラー専用のビュー フォルダーにそれらをパックできることを意味します。
このアプローチは便利だと思います。プロジェクトとコントローラーの構造を整理して活用します。
2) 利用エリア
エリアを使用する場合、各エリアには専用の「共有」フォルダーがあります。これは、機能がそのエリアにローカルである場合に便利です。
つまり、asp.net mvc の目的であり、すべてカスタマイズ可能です。
構造が次のように見える場所で、このようなことを行うことができます
これはテンプレートの表示に関するものです
使用を表示する
@Html.Display("","Home/Managable",null)
Display は、部分ビューを見つけてレンダリングするヘルパー拡張メソッドです。
エディターベースが必要な場合は、エディターテンプレートを使用でき、拡張メソッドは Editor 、 EditorFor などです。
ここの例はRazorにありますが、同じことがaspxビューエンジンにも当てはまります..
Views フォルダー内に、論理的に機能するフォルダー構造を作成します。
次に、ファイルへの完全な相対パスを使用して各ビュー (または部分) を呼び出すだけです。ビューを呼び出す入力が増えたとしても、適切なフォルダー構造を使用すると、呼び出しているビューの種類を (論理的に) より簡単かつ明確に確認できるため、時間を節約できます。
ビューのレンダリングでは、いくつかの可能な場所でビューを探す必要がないため、これにはパフォーマンス上の利点もあります。
ニーズに合わない場合、「慣習に基づいた方法」で行うことには非常にまれな利点があると思います。
別の良いヒントについても言及するかもしれません。デフォルトのビュー エンジンをすべて削除し、使用しているビュー エンジンのみが登録されていることを確認します。これにより、パフォーマンスも向上します。このような:
protected void Application_Start() {
ViewEngines.Engines.Clear();
// ViewEngines.Engines.Add(new RazorViewEngine());
ViewEngines.Engines.Add(new WebFormViewEngine());
}
このヒントに従ってください:
PartialView
に、それぞれを関連する Controller Folderに作成します。Shared
ため、名前の先頭に関連する文字を使用して各主題をまとめます。フォルダをクロールするときはShared
、関連するキーを押すだけでそのグループを見つけることができます!Areas
。それは簡単な方法で、設定も簡単です。それぞれArea
に個別のShared
フォルダーを作成できます。Microsoft Platform のロジックを変更しようとしないでください。彼らは私たちよりもこの問題をよく知っています。私の経験によると、MVC アプリケーションのロジックをそれぞれの方法で変更すると、あいまいなエラーや機能が表示される可能性があります。おそらく、この部分を強化するためのアップデートが行われるでしょう。
通常の階層を変更している場合は、共有ビューのグループを作成した場合のように、新しいフォルダー階層を伝えるだけです。
次に、部分ビューにアクセスするには、次のように記述します。
return PartialView("Group1/_Chart", model);