【发布时间】:2016-05-11 19:44:04
【问题描述】:
假设我有一个网站www.example.com
默认路由看起来像
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
好的,但假设我希望我的网站在我转到 www.example.com/id 时转到 www.example.com/login/index/id
我将如何为此配置/添加路由,而不会破坏我实际尝试转到www.example.com/controller 的其他页面?
编辑:不幸的是 id 是一个字符串,所以我没有任何我能想到的具体约束。想想也许我应该说 companyname 或 sitename 而不是 id,所以 URL 看起来像 www.example.com/companyname 。
到目前为止,我想出的唯一解决方案是像这样为我的每个控制器添加一个 maproute
routes.MapRoute(
name: "Home",
url: "Home/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Settings",
url: "Settings/{action}/{id}",
defaults: new { controller = "Settings", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "companyname",
url: "{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
这会起作用,但我有很多控制器,如果我将来添加一个并且忘记调整路线,它将失败。此外,这不太可能,但如果公司名称恰好与我的控制器名称之一相同,它也会失败。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-5 routes