0

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

http://localhost/member/delete/ME222 
http://localhost/admin/view/AD321

我的路线配置如下所示:

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-和 MemberController 中不存在该操作。

如果控制器(成员或管理员)中的当前当前操作不存在,我如何将上述内容路由到 SharedController 的操作?(不仅是 Detail 操作,还包括所有不存在的操作)

谢谢大卫

4

2 回答 2

0

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

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

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

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

于 2012-11-30T10:38:36.823 回答
0

如果您对两个控制器都有共同的操作,您可以简单地创建UserController将是控制器的基MemberAdmin。然后你可以把所有常见的动作放在里面UserController,它应该可以工作。
如果您想覆盖某些东西(或者例如为每个角色放置具有不同属性的标记动作),您可以将动作设为虚拟,然后在子类中覆盖它。

于 2012-11-30T10:42:35.630 回答