C# 如果操作不存在,则路由到不同的控制器和操作

C# 如果操作不存在,则路由到不同的控制器和操作,c#,routing,asp.net-web-api,C#,Routing,Asp.net Web Api,我目前有两个控制器,MemberController和Admincontroller,如果我像下面这样使用它,工作正常(不同的操作): 我的路线配置如下所示: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 但现在

我目前有两个控制器,MemberController和Admincontroller,如果我像下面这样使用它,工作正常(不同的操作):

我的路线配置如下所示:

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", 
  action = "Index", id = UrlParameter.Optional }
 );
但现在我已经为成员和管理员创建了一个共享操作(详细信息),我将其放入了SharedController中,并希望像这样访问它:

http://localhost/member/detail/ME222
http://localhost/admin/detail/AD321
当然,当我点击上面的url时,Admin-and-MemberController中不存在该操作

如果控制器(成员或管理员)中的当前操作不存在,如何将上述操作路由到SharedController的操作?(不仅仅是细节操作,而是所有不存在的操作)

谢谢
David

您需要确保操作始终存在。。。也许您可以为控制器创建一个基类

然后在基本操作中,您可以简单地返回:

this.RedirectToAction("action", "controller");

将其指向共享控制器上的相关操作。

如果两个控制器都有相同的操作,则可以简单地创建
UserController
,它将是
成员
管理员
控制器的基类。然后,您可以将所有常见操作放入
UserController
中,它应该可以工作

如果您想覆盖某些内容(例如,为每个角色设置具有不同属性的标记操作),您可以将操作设置为虚拟,然后在子类中覆盖它。

谢谢Petro,这很有意义!
this.RedirectToAction("action", "controller");