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的值比如这个 我没试过
你可以试试
"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的值比如这个 我没试过
你可以试试
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息