如果我有以下 MapRoute:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
我可以有一个像这样的网址:
blabla.com/Home/Index/123
但是我需要创建什么样的 MapRoute 才能做到这一点:
blabla.com/Home/123
还是blabla.com/Home/DEADBEEF
?
我想这涉及到一些类似的事情
“{controller}/{id}/{action}”
Action 和 id 颠倒了,也许应该有一个默认的 Action。但是 MapRoute 如何知道应该这样对待哪个 Controller 呢?
最佳答案
您可能需要类似的东西。
routes.MapRoute(
name: "DefaultRoute",
url: "Home/{action}",
defaults: new { controller = "Home", action = "Index" },
constraints: new { action = "[A-Za-z]*" }
);
或者不执行任何操作
routes.MapRoute(
name: "DefaultRoute",
url: "Home/{id}",
defaults: new { controller = "Home", action = "Index", id = "" },
constraints: new { id = "[A-Za-z]*" }
);
您需要确保路线名称与您设置的任何其他路线不同,并注意路线的顺序,因为其他相似的路线可能会相互覆盖。在这种情况下,请确保您可能希望在默认路由之前使用它,但请注意它会覆盖它。
对于没有 Controller 甚至操作的情况,您可以设置默认值,并且在路由中不需要它们。
对于约束,您只需将约束参数添加到路由中即可为某个属性设置正则表达式,如上所示。
编辑: 如果您需要的话,这里有一些有用的链接,可以获取有关路由的更多信息。
关于c# - MVC3 maproute 不显示操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356383/