ASP.NET MVC 路由规则及简述

    xiaoxiao2021-03-25  98

    //以下所有的自定义路由规则必须在默认路由规则之前,否则不起效果 

    //直接方法重载+匿名对象

    //最基础的路由规则,也是默认的路由规则             routes.MapRoute(                 name: "Default",                 url: "{controller}/{action}/{id}",                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }             );

    //构造路由然后添加             Route myroute = new Route("{controller}/{action}", new MvcRouteHandler());             routes.Add("MyRoute0", myroute);

    //添加命名空间的路由

    //在Action里面定义了一个参数"catchall"用来接收Url中除了Id之外其他所有的参数值

    //catchall 这个就可以实现了多个参数的传递

                //跨命名空间路由             routes.MapRoute(                 "AddContollerRoute",                 "Home/{action}/{id}/{*catchall}",                 new { controller = "Home", action = "Index", id = UrlParameter.Optional },                 new[] { "URLsAndRoutes.AdditionalControllers" }             );             routes.MapRoute(                 "MyRoute1",                 "{controller}/{action}/{id}/{*catchall}",                 new { controller = "Home", action = "Index", id = UrlParameter.Optional },                 new[] { "URLsAndRoutes.Controllers" }             );

    //关于{id}后面增加{*catchall}这个配置之后,在action的参数ID之后需要增加 string catchall这个参数来获取除ID之外的所有参数,案例如下:

    public ActionResult abcTest(string id,string catchall)         {             string temp = id;             string tt = catchall;

                return Content(id);         }             

    //可变长度路由 + 正则表达式匹配路由

    //正则表达式 ,在路由配置中,我们做了这样的规则,只匹配Controller名称以H开头的             routes.MapRoute(                 "MyRoute2",                 "{controller}/{action}/{id}/{*catchall}",                 new { controller = "Home", action = "Index", id = UrlParameter.Optional },                 new { controller = "^H.*", action = "^Index$|^About$" },                 new[] { "URLsAndRoutes.Controllers" }             );

                //指定请求方法             routes.MapRoute("MyRoute3", "{controller}/{action}/{id}/{*catchall}",                 new { controller = "Home", action = "Index", id = UrlParameter.Optional },                 new { controller = "^H.*", action = "Index|About", httpMethod = new HttpMethodConstraint("GET") },                 new[] { "URLsAndRoutes.Controllers" }             );

    
    转载请注明原文地址: https://ju.6miu.com/read-19939.html

    最新回复(0)