【发布时间】:2018-06-14 04:37:35
【问题描述】:
假设我有一个控制器FooController,它有一堆动作方法。其中一些方法我想重写,但没有一个方法被标记为virtual,我不想更改FooController 的代码。
所以我实现了一个CustomFooController(不是继承自FooController)并编写我想要的新版本的方法。
现在我想先路由到CustomFooController,如果那里的操作不可用,我想默认到FooController。我已经设置了这个路由配置来覆盖路由:
routes.MapRoute(
"customFoo",
"foo/{action}",
new { controller = "CustomFoo", action = UrlParameter.Optional }
);
以下是一些示例定义:
public class FooController : Controller
{
public ActionResult Bar { ... }
public ActionResult Baz { ... }
}
public class CustomFooController : Controller
{
public ActionResult Bar { ... }
}
因此,当访问/Foo/Bar 时,我们应该点击CustomFooController.Bar(),而当访问/Foo/Baz 时,我们应该点击FooController.Baz(),因为Baz() 没有在CustomFooController 中实现。
但是我得到“找不到资源”,我明白为什么,但是我可以在不修改 FooController 的情况下以某种方式解决它吗?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-routing