1

我需要我的ASP.NET MVC5视图结构来反映我的控制器的结构。基于控制器结构的MVC自定义视图路由


我的申请的控制器具有以下结构:

Controllers 
|--- Main 
| |--- HomeController.cs 
|--- User 
| |--- HomeController.cs 
| |--- SettingsController.cs 
|--- Admin 
| |--- HomeController.cs 
| |--- ManageController.cs 

控制器结构根据用户类型和Main控制器到所有用户访问。我的网址是这样的:

  • /Main/Home(默认)
  • /User/Settings
  • /Admin/Manage/Users

但你可以看到所有命名空间有一个HomeController,但是当我想创建,例如,User/HomeController的索引视图将被放置在Views/Home/Index.cshtml之内。但我实际上需要这种观点:Views/User/Home/Index.cshtml。下面是我需要结构化视图的示例结构。

Views 
|--- Main 
| |--- Home 
| | |--- Index.cshtml 
| | |--- Contact.cshtml 
|--- User 
| |--- Home 
| | |--- Index.cshtml 
| |--- Settings 
| | |--- Index.cshtml 
|--- Admin 
| |--- Home 
| | |--- Index.cshtml 
| |--- Manage 
| | |--- Index.cshtml 
| | |--- Users.cshtml 

我试图用一个自定义RazorViewEngine当然所有的例子我能找到(like this one)不会对我的情况下工作。有没有办法通过自定义路由来实现这个特定的结构?

+0

地区将是您的问题的良好解决方案。你可以在谷歌中获得大量的保持链接。 –

回答

1

正如其他人所指出的那样,你可以使用领域来构建自己的网站(前提是你只需要1级)。

如果你想要多个级别的控制器(/section1/sectiona/SomeController.cs),那么看看MvcCodeRouting

0

您可以指定你需要使用默认的任何路径,而不是如果区域不为你工作:

return View("user/home/index", model);