3

大規模なASP.NET-MVCプロジェクトがあり、共有 View フォルダーに多数のファイルがあります。

これらのファイル ( Views ) をグループ化して、理解しやすくしたいと考えています。同じ問題があると思われるこのブログ投稿を見ましたが、ソリューションに追加の依存関係/ dllを避けたいと思います。

とにかく、外部依存関係なしでShared Views ディレクトリを整理する方法はありますか? aspx View Engineを使用しています ( Razorではありません)

4

6 に答える 6

4

ASP.NET MVC では、共有は複数の方法で機能します。

1) コントローラのビュー フォルダを使用します。

はい、View Engine は常に部分ビューの共有フォルダをチェックします。ただし、共有フォルダをチェックする前に、View Engine は「アクティブな」フォルダをチェックします。

より詳細に説明するために、 HomeController を使用して " Home " ビュー フォルダーにビューをレンダリングし、"NavPartial" という部分ビューをレンダリングしているシナリオ取り上げます部分ビューの「共有」フォルダをチェックする前に、ビュー エンジンは「ホーム」ビュー フォルダを最初にチェックします。

これは、コントローラー内でパーシャルを再利用する必要がある場合、そのコントローラー専用のビュー フォルダーにそれらをパックできることを意味します。

このアプローチは便利だと思います。プロジェクトとコントローラーの構造を整理して活用します。

2) 利用エリア

エリアを使用する場合、各エリアには専用の「共有」フォルダーがあります。これは、機能がそのエリアにローカルである場合に便利です。

于 2013-10-30T19:31:30.773 に答える
3

つまり、asp.net mvc の目的であり、すべてカスタマイズ可能です。

構造が次のように見える場所で、このようなことを行うことができます

フォルダ構造

これはテンプレートの表示に関するものです

使用を表示する

@Html.Display("","Home/Managable",null)

Display は、部分ビューを見つけてレンダリングするヘルパー拡張メソッドです。

エディターベースが必要な場合は、エディターテンプレートを使用でき、拡張メソッドは Editor 、 EditorFor などです。

ここの例はRazorにありますが、同じことがaspxビューエンジンにも当てはまります..

于 2013-11-02T11:30:05.990 に答える
1

Views フォルダー内に、論理的に機能するフォルダー構造を作成します。

次に、ファイルへの完全な相対パスを使用して各ビュー (または部分) を呼び出すだけです。ビューを呼び出す入力が増えたとしても、適切なフォルダー構造を使用すると、呼び出しているビューの種類を (論理的に) より簡単かつ明確に確認できるため、時間を節約できます。

ビューのレンダリングでは、いくつかの可能な場所でビューを探す必要がないため、これにはパフォーマンス上の利点もあります。

ニーズに合わない場合、「慣習に基づいた方法」で行うことには非常にまれな利点があると思います。


別の良いヒントについても言及するかもしれません。デフォルトのビュー エンジンをすべて削除し、使用しているビュー エンジンのみが登録されていることを確認します。これにより、パフォーマンスも向上します。このような:

protected void Application_Start() {
    ViewEngines.Engines.Clear();
    // ViewEngines.Engines.Add(new RazorViewEngine());
    ViewEngines.Engines.Add(new WebFormViewEngine());
}
于 2013-11-04T04:34:23.030 に答える
0

このヒントに従ってください:

  1. 混雑した Shared Folder を避けるためPartialViewに、それぞれを関連する Controller Folderに作成します。
  2. アイテムには独自の命名規則を使用するSharedため、名前の先頭に関連する文字を使用して各主題をまとめます。フォルダをクロールするときはShared、関連するキーを押すだけでそのグループを見つけることができます!
  3. プロジェクトで本当に別々の概念を扱う場合は、 を使用してください Areas。それは簡単な方法で、設定も簡単です。それぞれArea に個別のSharedフォルダーを作成できます。

Microsoft Platform のロジックを変更しようとしないでください。彼らは私たちよりもこの問題をよく知っています。私の経験によると、MVC アプリケーションのロジックをそれぞれの方法で変更すると、あいまいなエラーや機能が表示される可能性があります。おそらく、この部分を強化するためのアップデートが行われるでしょう。

于 2013-11-03T21:42:59.083 に答える
0

通常の階層を変更している場合は、共有ビューのグループを作成した場合のように、新しいフォルダー階層を伝えるだけです。

グループ

次に、部分ビューにアクセスするには、次のように記述します。

return PartialView("Group1/_Chart", model);
于 2013-11-04T13:33:09.840 に答える