0

我想创建基于模块的结构,就像在 zend 框架中一样。假设我有 2 个控制器,比如学生和老师,我想把所有这些都放在一个文件夹中,比如学校。同样,我想要学校文件夹中每个控制器的视图文件,例如

对于控制器:

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 并不关心控制器位于哪个文件夹中。事实上,它甚至不必位于名为 Controllers 的文件夹中。MVC 只查找名称中带有 Controller 的类名。一旦编译,文件夹结构就会丢失,因此框架无法知道在子文件夹中查找视图,因为该信息不再存在于编译代码中。

但是,您仍然可以这样做.. 但是您不能再依赖 MVC 自动查找视图文件,您必须直接传递每个视图名称。

这意味着您必须这样做:

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

而不是这个。

return View();

另一种选择是使用区域,它允许您创建一个学校区域,然后您可以在学校区域内创建一个教师和学生控制器。

于 2012-07-13T06:04:22.703 回答