MVC阻止基类控制器操作被路由到

时间:2012-08-07 02:11:20

标签: asp.net-mvc-3

对于我的几个控制器,我有一个实现常见操作的基类。

e.g。
- BaseAccountController具有登录操作
- PublicAccountController继承自BaseAccountController并实现进一步的操作
- CorporateAccountController继承自BaseAccountController并实施进一步的操作

这给出了以下路线:
  - BaseAccount /登录
  - PublicAccount /登录
  - CorporateAccount /登录

删除路由BaseAccount / Login的标准方法是什么,因为这不是必需的。我希望控制器上有一个属性:)

2 个答案:

答案 0 :(得分:5)

您可以为Base控制器使用以下自定义属性:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class ClosedAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
       filterContext.Result = new HttpStatusCodeResult(404);
   }
}

您的基本控制器路由将收到404 - BaseAccount / Login。但请确保Inherited属性为false(如示例所示)。

使用示例:

[Closed]
public class BaseAccountController : Controller
{
    ...
}

您可以在此处阅读有关自定义操作过滤器的更多信息(如果需要) - http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs

答案 1 :(得分:0)

如果BaseAccountController只有登录操作,那么您可以将其标记为abstract