1

我有这样一个观点文件结构返回特定视图:问题在asp.net MVC3

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 

基本上,如果我能够消除员工部分,发动机就会找到它。

〜/查看/ 员工 /Company/Employee/ManageEmployee.cshtml 这个

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

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

谢谢。

+0

有点不相关/略有关系,但也许考虑使用T4MVC?这将避免'魔术串'。手动输入视图名称时,它肯定是有帮助 - http://mvccontrib.codeplex.com/wikipage?title=T4MVC – 2011-01-05 21:02:04

+0

*您这里有两种选择* **选项#1 ** *创建公司/部门/ **共享文件夹**内的员工目录。您可以在根目录的查看文件夹中找到共享文件夹* **选项#2 ** *创建员工/公司/部门/员工目录indide查看根文件夹的目录。* – 2013-07-19 10:06:24

回答

1

您需要按照ControllerNameController的MVCS约定控制器和ControllerName的视图结构/ ...

如果你想在你的结构完全控制你需要切换到不同的框架就像FubuMVC

+1

绝对,我需要遵循MVC约定。我所做的解决我的情况是创建具有不同文件名的相同控制器的部分类,以分离逻辑,但具有我期待的URl结构。谢谢 – roncansan 2011-01-05 19:17:55

7

你试过:

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

它看起来像引擎正试图视图相对于在该网站,而不是从网站的根回到您的当前位置。

2

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

return View("ManageEmployee", loadedEmp); 

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

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

1

如果你想要自己安排视图文件夹结构的约定,最好插入你自己的视图引擎。