路由配置问题无法解决
本文关键字:解决 问题 配置 路由 | 更新日期: 2023-09-27 18:02:19
给定这个URL
http://localhost:51095/Person // This is equivalent to this one Person/Index
http://localhost:51095/Person/Allan
我为它设置一个路由配置,如下所示:
routes.MapRoute(
"Person",
"Person/{personName}",
new { controller = "Person", action = "Person", personName = UrlParameter.Optional }
)
;
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
第一个URL应遵循Default
路由,第二个URL应遵循Person
路由。
这不起作用,因为第一个配置似乎捕获了所有这些URL的
我要做的第一件事是在第一个路由中删除personName = UrlParameter.Optional
。这将只允许提供personName
值的url访问此路由。如果没有提供值,它应该通过默认路由。
但是你需要考虑这个策略的未来:如果你在Person控制器上实现新的动作,你需要为每个动作添加一个新的Route。如果你有一个新的"编辑"动作,例如:
routes.MapRoute(
"Person_Edit",
"Person/Edit/{personName}",
new { controller = "Person", action = "Edit" }
)
你可能希望在第一个之前添加这些新的路由——路由的排序/优先级是很重要的。