我目前有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 }
);
但是现在我已经为Member和Admin创建了一个共享操作(详细信息),我将它放在我的SharedController中,并希望像这样访问它:
http://localhost/member/detail/ME222
http://localhost/admin/detail/AD321
当我点击上面的url时,Admin-和MemberController中不存在该动作。
如果控制器(成员或管理员)中的当前当前操作不存在,如何路由上述内容以转到SharedController的操作? (不仅是详细操作,还包括所有不存在的操作)
由于 大卫
答案 0 :(得分:0)
您需要确保操作始终存在...也许您可以为控制器创建基类。
然后在基本动作中你可以简单地返回:
this.RedirectToAction("action", "controller");
将此指向共享控制器上的相关操作。
答案 1 :(得分:0)
如果您对两个控制器都有共同的操作,则可以创建UserController
,它将是Member
和Admin
控制器的基类。然后,您可以将所有常见操作放在UserController
中,它应该可以正常工作。
如果要覆盖某些内容(或者例如为每个角色添加具有不同属性的标记操作),您可以将操作设置为虚拟,然后在子类中覆盖它。