我想在一个公共网址中隐藏几个控制器“创建”操作的请求。控制器都位于Controllers目录中的子文件夹中:
Controllers \ mydirectory \ controller1
\ controller2
我试过这种方式
routes.MapRoute(
name: "controller1Create",
url: "buy",
defaults: new { controller = "controller1", action = "Create" }
);
并将controller1更改为
../mydirectory/controller1
/controller1
但是无论何时我去创建动作,网址都保持不变.. .com / controller1 / create
如何做到这一点?谢谢你的帮助!
答案 0 :(得分:1)
首先,为这些控制器创建一个文件夹实际上并不是你想要的。 ASP.NET MVC并不关心控制器的位置,它会扫描程序集,所有控制器的行为都会像它们在根目录中一样。
如果在Controllerlers / MyDirectory中放置名为Controller1的控制器。它仍然可以从/Controller1
网址到达,MyDirectory/Controller1
将失败。
您需要的是一个区域。您必须为这些控制器创建一个区域,将它们放在自己的Controllers文件夹中。
然后你可以在AreaRegistration类中使用这样的区域路径:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"MyArea_default",
"MyDirectory/{controller}/{action}/{id}",
new { action = "Create", id = UrlParameter.Optional }
);
}