这是完全可定制的global.asax.cs
默认情况下,一个新的 MVC 项目会添加遵循约定的标准 'catchall' 路由:www.mysite.com/Controller/Action/ID
如果您想要一些不同的东西,例如您的 www.mysite.com/about 路由到 HomeController.About() 操作的示例,您可以在包罗万象的之前添加以下路由:
routes.MapRoute(
"My About Route",
"About",
new { controller = "Home", action = "About" }
);
您可以添加任意数量的不遵循 MVC 通用约定的自定义路由,如果您愿意,甚至可以完全替换通用路由。
编辑:
要在下面回答您的评论,不,您不一定需要为每个可能的操作添加路线,而是可以制作一条适合 url 模式的路线 - 就像包罗万象的路线一样。{controller}
和{action}
是特殊的关键字。
例子:
1.)程序有一个SetController,但用户习惯称它们为Batches:
routes.MapRoute(
"Batch",
"Batch/{action}/{id}",
new { controller = "Set", action = "Index", id = UrlParameter.Optional }
);
2.) 您更喜欢按控制器的对象类型进行分组,但 URL 必须是动词/名词格式:
- 飞行控制器
- 酒店控制器
- /查找/飞行 /预订/飞行
- /查找/酒店/预订/酒店/希尔顿
routes.MapRoute(
"NewCatchall",
"{action}/{controller}/{name}",
new { controller = "Home", action = "Index", name = UrlParameter.Optional }
);
第二个示例可以完全替换默认路由,并且所有可能的 url 都适合其格式。所以没有什么会继续检查任何其他路线。重要的是要知道路由是按顺序检查的,并且使用与请求匹配的第一个模式 - 其余的被忽略。
这些对我学习时很有用: