将控制器重定向到另一个控制器

Redirect Controller to Another Controller

例如,我有 ControllerA,当用户输入 URL /ControllerA/{Any Action name} 它应该重定向到 /ControllerB/Index

有没有一种简单的方法可以将 ControllerA 中的所有操作重定向到 ControllerB 而无需编写 RedirectToActionControllerA

中的所有操作中

问题不是很清楚-

我可以看到三种不同的场景(也许更多?) 1.在做任何事情之前,你真的需要从所有这些动作中重定向吗(那么为什么它们在那里?), 2.要不要让他们执行然后去ControllerB。 3. 您是否只想为所有这 10 个 Urls 直接调用 ControllerB?

对于场景一,您可以只在 controllerA(甚至 controllerB)上使用属性路由,并使用一个重定向到 index.js 的方法。 对于场景二,您想覆盖 OnActionExecuted 对于方案三,您希望将属性路由直接放在索引上,所有路径都指向那里。

编辑:

你可以在路由中做一些让控制器 A 短路的事情。

if (configurationCondition)
{
    routes.MapRoute("Hijaack",
        url: "controllerA/{*theRest}",
        defaults: new { controller = "controllerB", action = "Index" });
}

这比要求操作与 controllerA 上的内容完全匹配更宽松。它完全避免了重定向,这对最终用户来说应该是更好的体验。

它可以通过属性路由收紧到更具体的路由。

在不影响 ControllerA 的情况下,还有一些其他方法更适合:

  • 通过使用过滤器,当您看到用户正在请求此控制器时,您 return 对第二个控制器的重定向响应

  • 通过使用路由规则

两者都可以通过处理您的网络配置设置来实现。