asp.net 带参数的 mvc 路由

asp.net mvc route with parameter

我正在尝试获取以下链接:

我无法使路由正常工作,因为它们似乎相互冲突。以下使我始终拥有路由参数,这不是我需要的。如果不提供数据库参数,它将不会绑定。

routes.MapRoute(
    name: "Default",
    url: "{database}/{controller}/{action}",
    defaults: new { database = UrlParameter.Optional, controller = "Account", action = "Index" }
);

顺序在您的路线配置中很重要。 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" }
);