在asp.net mvc3中返回特定视图时出现问题

时间:2011-01-05 16:03:43

标签: asp.net-mvc model-view-controller asp.net-mvc-routing asp.net-mvc-3

我有一个视图文件结构,如:

Views
   Company
      Department
      Employee
          ManageEmployee.cshtml

,控制器是

public class EmployeeController : Controller
 {
    public ActionResult Index(int dptId)
    {
            var loadedEmp = getEmpOf(dptId);
            return View("Company/Employee/ManageEmployee", loadedEmp);
     }
}

但控制器给我一个错误 - 告诉它无法找到视图。这是它搜索的路径。

~/Views/Employee/Company/Employee/ManageEmployees.aspx
~/Views/Employee/Company/Employee/ManageEmployees.ascx
~/Views/Shared/Company/Employee/ManageEmployees.aspx
~/Views/Shared/Company/Employee/ManageEmployee.ascx
~/Views/Employee/Company/Employee/ManageEmployee.cshtml
~/Views/Employee/Company/Employee/ManageEmployee.vbhtml
~/Views/Shared/Company/Employee/ManageEmployee.cshtml
~/Views/Shared/Company/Employee/ManageEmployee.vbhtml

基本上,如果我能够消除员工部分,引擎会找到它。

〜/ Views / 员工 /Company/Employee/ManageEmployee.cshtml 到此

〜/查看/公司/雇员/ ManageEmployee.cshtml

有关如何实现这一目标的任何见解。

感谢。

4 个答案:

答案 0 :(得分:7)

你试过了吗?

return View("/Company/Employee/ManageEmployee", loadedEmp);

看起来引擎正在尝试相对于站点中的当前位置返回视图,而不是从站点的根目录返回。

答案 1 :(得分:2)

必须以下列方式从控制器返回视图(对于特定视图):

return View("ManageEmployee", loadedEmp);

在MVC中,控制器将自动路由到您提供的视图名称。

loadedEmp应该是您传递给视图的对象。

答案 2 :(得分:1)

您需要遵循控制器的ControllerNameController的MVC约定以及ControllerName /...的视图结构。

如果您想完全控制您的结构,则需要切换到FubuMVC之类的其他框架。

答案 3 :(得分:1)

如果您想要自己安排视图文件夹结构的约定,那么插入自己的视图引擎会更好。