我想获得以下链接:
AccountController
/ Index
)AccountController
/ Login
)EmailsController
/ Index
操作,2112将是路由参数)EmailsController
/ List
操作,212将是路由参数)我无法让路线发挥作用,因为它们之间似乎相互冲突。以下内容让我始终拥有路线参数,这不是我需要的。如果不提供数据库参数,它就不会绑定。
routes.MapRoute(
name: "Default",
url: "{database}/{controller}/{action}",
defaults: new { database = UrlParameter.Optional, controller = "Account", action = "Index" }
);
答案 0 :(得分:1)
订单在您的路线配置中很重要。在MVC中路由的关键是从最具体的路由开始并进行处理。此外,由于您具有电子邮件控制器的特定路由规则,因此您可以在URL参数中专门指定控制器的名称。所以在这里你会这样做:
routes.MapRoute(
name: "Emails",
url: "{id}/Emails/{action}",
defaults: new { controller = "Emails", action = "Index" },
constraints: new { id = @"\d+" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Account", action = "Index" }
);