【问题标题】:MVC custom view routing based on controller structure基于控制器结构的MVC自定义视图路由
【发布时间】:2016-09-28 10:12:50
【问题描述】:

我需要我的 ASP.NET MVC5 视图结构来反映我的控制器的结构。


我的应用程序的控制器具有以下结构:

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) 都不适用于我的情况。有没有办法通过自定义路由来实现这种特定的结构?

【问题讨论】:

  • area 将是解决您问题的好方法。您可以在 google 中获得很多保持性链接。

标签: c# asp.net-mvc model-view-controller url-routing asp.net-mvc-routing


【解决方案1】:

我相信你正在寻找区域。

Areas 在 MVC 4 中可用。在 MVC 5 中没有区别。

Here you can find a details.

【讨论】:

    【解决方案2】:

    正如其他人指出的那样,您可以使用区域来构建您的网站(前提是您只需要 1 个级别)。

    如果您想要多个级别的控制器 (/section1/sectiona/SomeController.cs),请查看 MvcCodeRouting

    【讨论】:

      【解决方案3】:

      如果区域不适合您,您可以指定所需的任何路径,而不是使用默认值:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-12
        • 2018-02-20
        • 2011-06-04
        • 2014-02-14
        • 1970-01-01
        • 2016-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多