中易网

asp.net mvc中如果注册一个路由{a}/{b}/{c}/{d},路由怎么解析

答案:1  悬赏:30  
解决时间 2021-01-14 20:36
  • 提问者网友:城市野鹿
  • 2021-01-13 21:46
asp.net mvc中如果注册一个路由{a}/{b}/{c}/{d},路由怎么解析
最佳答案
  • 二级知识专家网友:煞尾
  • 2021-01-13 23:12
routes.MapRoute(

                "Default", // 路由名称

                "{controller}/{action}/{id}", // 带有参数的 URL

                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值

            );一般来说  路由是这样的
 你写的那个 要自定义路由了
 
定义一个路由首先你要写控制器名字和方法名
比如
routes.MapRoute(

                "Default2", // 路由名称

                "{a}/{b}/{c}/{d}", // 带有参数的 URL

                new { controller = "Home", action = "Index", a ="1",b="2",c="3",d="4" } // 参数默认值

            );这个路由写得比较简单
但是实际上 这个路由调用的是
Home控制器下面  Index()//4个参数
 
我是这样理解的 也是这样用的
如有发现不对的地方 麻烦指出来 大家学习下
 
给你看看我写的路由
routes.MapRoute(

             "Caps2",

             "San-Francisco-49ers-Hats",

             new { controller = "PClass", action = "Caps" }

               );
            routes.MapRoute(

             "Versions2",

             "San-Francisco-49ers-{Version}-Jersey-Page-{p}",

             new { controller = "PClass", action = "SiteVersion2" }, new { Version = @"(Elite|Limited|Game)$", p = @"+?[1-9][0-9]*" }

               );

            routes.MapRoute(

             "Versions",

             "San-Francisco-49ers-{Version}-Jersey",

             new { controller = "PClass", action = "SiteVersion" }, new { Version = @"(Elite|Limited|Game)$" }

               );
追问:那也就是说,定义路由时,必须在路由模式里指定controller和action的值,要么在第二个参数里定义,要么就在第三个参数里定义,这么理解对吧,这些键值都保存在RouteData里,必须保证RouteData里有键为controller和action的值,否则路由解析就不会成功,这么理解讲得通吗
追答:必须在路由模式里指定controller和action的值我觉得是的
你注意到默认的路由没有 当没指定时 默认的是控制器/方法
要么在第二个参数里定义,要么就在第三个参数里定义至于这个 我不知道你说的第二个参数和第3个参数指的哪个

已第一个为例 routes.MapRoute("名字随便写不要重复","Home-Index",new{controller = "Home", action = "Index"})
这个你看得懂吧 这个最终访问的时home控制器下面的index方法

当你有疑问时 你可以先试试

必须保证RouteData里有键为controller和action的值比如这个 我没试过
你可以试试
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息