基本原则:精确匹配的靠前;缩略路径靠后。
具体来说:
routes.MapRoute(
"PhotoDetail", // Route name
"Photos/Detail/{albumId}/{photoId}/{commentPageIndex}", // URL with parameters
new { controller = "Photos", action = "Detail", albumId = UrlParameter.Optional, photoId = UrlParameter.Optional, commentPageIndex=UrlParameter.Optional } // Parameter defaults
);
要靠前;"PhotoDetail", // Route name
"Photos/Detail/{albumId}/{photoId}/{commentPageIndex}", // URL with parameters
new { controller = "Photos", action = "Detail", albumId = UrlParameter.Optional, photoId = UrlParameter.Optional, commentPageIndex=UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"PhotoDetailShort", // Route name
"Photos/{albumId}/{photoId}/{commentPageIndex}", // URL with parameters
new { controller = "Photos", action = "Detail", albumId = UrlParameter.Optional, photoId = UrlParameter.Optional, commentPageIndex = UrlParameter.Optional } // Parameter defaults
);
要放到后面 "PhotoDetailShort", // Route name
"Photos/{albumId}/{photoId}/{commentPageIndex}", // URL with parameters
new { controller = "Photos", action = "Detail", albumId = UrlParameter.Optional, photoId = UrlParameter.Optional, commentPageIndex = UrlParameter.Optional } // Parameter defaults
);
否则可能很诡异的事情出现。