路由配置问题无法解决

本文关键字:解决 问题 配置 路由 | 更新日期: 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" }
)

你可能希望在第一个之前添加这些新的路由——路由的排序/优先级是很重要的。