1

我想在一个公共 url 中隐藏对多个控制器“创建”操作的请求。控制器都位于 Controllers 目录的子文件夹中:

Controllers \ mydirectory \ controller1
                          \ controller2

我试过这样

routes.MapRoute(
    name: "controller1Create",
    url: "buy",
    defaults: new { controller = "controller1", action = "Create" }
);

并将 controller1 更改为

 ../mydirectory/controller1
 /controller1

但是每当我进行创建操作时,网址都保持不变.. .com/controller1/create

怎么做才对?谢谢您的帮助!

4

1 回答 1

1

首先,为这些控制器创建一个文件夹实际上并不能满足您的要求。ASP.NET MVC 不关心你的控制器在哪里,它会扫描程序集,所有控制器的行为就像它们在根目录中一样。

如果您将一个名为 Controller1 的控制器放在 Controllers/MyDirectory 中。它仍然可以从/Controller1 URL 访问并且MyDirectory/Controller1会失败。

你需要的是一个区域。您必须为这些控制器创建一个区域,将它们放在自己的 Controllers 文件夹中。

然后你可以在 AreaRegistration 类中使用这样的区域路由:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "MyArea_default",
        "MyDirectory/{controller}/{action}/{id}",
        new { action = "Create", id = UrlParameter.Optional }
    );
}
于 2013-06-01T19:06:53.047 回答