0

zendフレームワークのように、モジュールベースの構造を作成したいと思います。生徒と教師のように2つのコントローラーがあり、これらすべてを1つのフォルダー(shchoolなど)に入れたいとします。同じように、学校のフォルダ内の各コントローラのビューファイルが必要です。

コントローラーの場合:

D:\aspprojects\Project1\Project1\Controllers\School\TeacherController.cs
D:\aspprojects\Project1\Project1\Controllers\School\StudentController.cs

およびビューファイルの場合:

D:\aspprojects\Project1\Project1\Views\School\Teacher\all CRUD files(*.cshtml)
D:\aspprojects\Project1\Project1\Views\School\Student\all CRUD files(*.cshtml)

現在の構造は以下のとおりです。

コントローラーの場合:

D:\aspprojects\Project1\Project1\Controllers\TeacherController.cs
D:\aspprojects\Project1\Project1\Controllers\StudentController.cs

ビューファイルの場合

D:\aspprojects\Project1\Project1\Views\Teacher\all CRUD files(*.cshtml)
D:\aspprojects\Project1\Project1\Views\Student\all CRUD files(*.cshtml)

どのような変更を行う必要がありますか?

4

1 に答える 1

2

あなたが直面している問題は、MVCがコントローラーがどのフォルダーにあるかを気にしないことです。実際、コントローラーと呼ばれるフォルダーにある必要はありません。MVCは、名前にControllerが含まれるクラス名のみを検索します。コンパイルされると、フォルダー構造は失われます。そのため、フレームワークがサブフォルダーでビューを探す方法はありません。これは、その情報がコンパイルされたコードに存在しなくなるためです。

ただし、それでも実行できます。ただし、MVCに依存してビューファイルを自動的に検索することはできなくなります。各ビュー名を直接渡す必要があります。

これは、これを行う必要があることを意味します。

return View("~/Views/School/Teacher/Index.cshtml");

これよりも。

return View();

もう1つのオプションは、エリアを使用することです。これにより、学校エリアを作成できます。次に、学校エリア内に教師と生徒のコントローラーを作成できます。

于 2012-07-13T06:04:22.703 に答える