我正在ASP.NET中使用MVC 5.2.4.0 设置新服务器。我的问题是路由配置。
在配置文件 App_Start / RouteConfig.cs 中,我输入了以下代码:
routes.MapRoute(
name: "DefaultEvent",
url: "{idseries}/{controller}/{action}/{id}",
defaults: new { idseries= "startgate", idsequel = "SG1", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultEdition",
url: "{idseries}/{idsequel}/{controller}/{action}/{id}",
defaults: new { idseries= "stargate", idsequel = "SG1", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我要使用以下格式的网址:
url:port
url:port/stargate
url:port/stargate/episode/actors
url:port/stargate/episode/actors/ONeill
url:port/stargate/SG1
url:port/stargate/SG1/episode/actors
url:port/stargate/SG1/episode/actors/ONeill
我了解到ASP.NET试图找到没有失败的第一个 MapRoute ,但事实并非如此。
我已经使用了Visual Studio调试器,但这仅在第一次执行时输入文件 RouteConfig.cs 。
此外,我已经创建了MapRoutes来涵盖所有组合,但是它仅输入第一个条目。如果没有输入,它将失败,并显示404错误页面。
示例:
routes.MapRoute(
name: "DefaultEvent",
url: "{idseries}/{controller}",
defaults: new { idseries= "startgate", idsequel = "SG1", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultEdition",
url: "{idseries}/{idsequel}",
defaults: new { idseries= "stargate", idsequel = "SG1", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
使用此配置,如果我没有放置有效的驱动程序,它将失败。
routes.MapRoute(
name: "DefaultEdition",
url: "{idseries}/{idsequel}",
defaults: new { idseries= "stargate", idsequel = "SG1", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultEvent",
url: "{idseries}/{controller}",
defaults: new { idseries= "startgate", idsequel = "SG1", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
但是如果我把它倒过来,它就算是续集的ID(我认为是逻辑的)。