通过在MVC4中使用MVC路由自定义“子目录”URL

时间:2014-02-18 05:01:10

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我正在开发一个MVC4项目,但是我对如何通过自定义路由实现以下场景有些茫然:

说我有以下页面结构

+ Home                (Desired URL: /Home)
+ Settings            (Desired URL: /Settings)
  - Emails            (Desired URL: /Settings/Emails)
  - SMS               (Desired URL: /Settings/SMS)
  - Notifications     (Desired URL: /Settings/Notifications)

每个页面都有自己的控制器,模型和视图,因为一些设置页面非常复杂。如何通过路由实现所需的URL?

到目前为止,我只能将{strong>所有内容显示在/Settings/{PageName}下,包括Home页面,这显然不太好。

我看过网上搜索但是当页面都有不同的控制器时,我找不到一个如何实现这样的清晰示例。

如何做到这一点?感谢。

1 个答案:

答案 0 :(得分:1)

你必须使用像这样的硬编码路线。您是否有理由为每个页面使用不同的控制器?

routes.MapRoute(
name: "Home",
url: "Home",
defaults: new { controller = "Home", action = "Index" }
);

routes.MapRoute(
name: "Settings",
url: "Settings",
defaults: new { controller = "Settings", action = "Index" }
);

routes.MapRoute(
name: "Emails",
url: "/Settings/Emails",
defaults: new { controller = "Emails", action = "Index" }
);