【问题标题】:.NET MVC custom routing.NET MVC 自定义路由
【发布时间】:2009-10-26 08:11:38
【问题描述】:

我想知道是否可以创建一个比控制器高一级的路由映射。典型的路由将包括“/controller/action/id”。我正在寻找类似“section/controller/action/id”或“controller/section/action/id”的东西。我该怎么做?

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-routing


【解决方案1】:

没问题。只需创建一个 URL 为的路由,例如

path/to/my/application/{controller}/{action}/{id}

...并像往常一样提供默认控制器和操作。

一个具体的例子是

context.MapRoute(
    "Admin_default",
    "admin/{controller}/{action}/{id}",
    new { controller = "AdminHome", action = "Index", id = "" }
);

这将映射例如以下 URL:

/admin/                   => AdminHomeController.Index
/admin/adminhome/         => AdminHomeController.Index
/admin/other/             => OtherController.Index
/admin/statistics/view/50 => StatisticsController.View(50)

但请注意,如果您也有默认路由,例如这样:

context.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

...然后管理员路由中的控制器操作方法也可以通过此路由访问。请使用URL Routing Debugger 确定。

【讨论】:

  • 为避免混淆,应为"pathToApplication/ExtraBits/{controller}/...",其中pathToApplication 是IIS 应用程序的根(即“~”)。
猜你喜欢
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多