路由可以是自定义路由,也可以是静态路由,还可以是动态路由和组合路由等。
一丶动态路由
routes.MapRoute( name: "Default", //路由名称 url: "{controller}/{action}/{id}", //路由规则 defaults: new { controller = "First", action = "Index1", id = UrlParameter.Optional } //默认值,当Controller或action为空(省略)的时候调用,id可以随意命名需与路由规则对应起来 );
//或者把url可以改为:
url: "{controller}/{action}-{id}", //路由规则
二丶静态路由
routes.MapRoute( name: "Default2", //路由名称 url: "Demo", //路由规则,不区分大小写,当输入“Demo”时,会自动跳转到下面的地址 defaults: new { controller = "First", action = "Index1", id = UrlParameter.Optional } //默认值,当Controller或action为空的时候调用 );
MapRoute方法是可以不需要写参数名
routes.MapRoute( "Default2", //路由名称 "Demo", //路由规则,不区分大小写,当输入“Demo”时,会自动跳转到下面的地址 new { controller = "First", action = "Index1", id = UrlParameter.Optional } //默认值,当Controller或action为空的时候调用 );
三丶组合路由
routes.MapRoute( "Default4", //路由名称 "Demo/{action}", //路由规则,不区分大小写,规则相符的时候,会自动跳转到下面的地址 new { controller = "First", action = "Index1" } );
四丶正则约束
(详情可关注:http://www.cnblogs.com/yaopengfei/p/7885597.html)
五丶命名空间约束
六丶Area区域内的路由
public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( this.AreaName + "_default", this.AreaName + "/{controller}/{action}/{id}", new { area = this.AreaName, controller = "Test", action = "Index", id = UrlParameter.Optional }, new string[] { "MvcZodiac.Areas." + this.AreaName + ".Controllers" } ); }