【发布时间】:2023-03-14 15:10:02
【问题描述】:
我想从路由中抑制控制器,并且使用它可以正常工作:
routes.MapRoute(
name: "HomePages",
url: "{action}",
defaults: new { controller = "Home", action = "Index" }
);
问题是当对不同的控制器(如“帐户”)执行相同操作时,只有第一个选项才会生效:
routes.MapRoute(
name: "LoginRoute",
url: "{action}",
defaults: new { controller = "Account", action = "Login" }
);
我的目标是从路由中隐藏控制器,这样我就可以直接访问 mysite.com/login 和 mysite.com/index,当登录在 Account 控制器下并且 index 在 Home 控制器下时如何实现?
如何为 Account 操作指定第二个选项,并为 Home 操作保留第一个选项?
【问题讨论】:
-
先想好你想要实现的目标 - 目前两者都匹配完全相同的一组 Url,第一个匹配将获胜...
-
@AlexeiLevenkov,我想从路由中隐藏控制器,所以我可以直接访问 mysite.com/login 和 mysite.com/index 如何实现登录在
Account控制器和索引下在Home控制器下? -
url: "Login", defaults: new { controller = "Account", action = "Login" }- 如果您不需要映射所有操作(确保首先提及更具体的路线)。 -
有什么方法可以映射到控制器级别,而不仅仅是操作级别,假设我在 Account 下有很多操作,在 Home 下还有更多操作,我应该将它一一映射到操作级别吗?换句话说,一个控制器下所有操作的一个路由选项等等。
标签: c# .net asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing