MVC路由

路由可以是自定义路由,也可以是静态路由,还可以是动态路由和组合路由等。

一丶动态路由

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" }
            );
        }

猜你喜欢

转载自www.cnblogs.com/chenze-Index/p/9293253.html
今日推荐