在我的 ASP.NET MVC 项目中,我有一些具有特定名称的区域,Admin
但我希望我的路线使用iAdmin
。
为此,我使用了RegisterArea
可以指定路线的位置,并且效果很好:
context.MapRoute(
"Admin_default",
"iAdmin/{action}",
new { controller = "iAdmin", action = "Index" }
);
但是,在项目中我有另一个默认的路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Identification", action = "Index" }
);
使用此默认路由采用控制器名称,并且由于我的控制器以区域名称而不是路由名称命名,(因此AdminController
而不是iAdminController
)如果 url 类似于/Admin
,则路由将起作用,而我不想要那样。
我怎样才能防止这种情况发生?
我尝试了这两种解决方案:
- 我可以忽略每条
RegisterArea
我不想要的路线,这似乎没问题,但有点太多了,因为我相信我必须忽略每一个动作,除非我可以使用 RegEx - 或者我可以将区域中的控制器重命名为我想要的名称,老实说,这不仅看起来最简单,而且如果我们原来的命名控制器的方法是一个坏主意/做法,那么这也可能是正确的答案
我的问题是:
- 还有其他方法可以阻止使用我们所在区域控制器的名称进行路由吗?
- 我们的控制器原来的命名是否存在问题?
提前感谢您的时间