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

Dal*_*e K 0 asp.net-mvc-3

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

例如
- BaseAccountController有一个登录操作
- PublicAccountController继承自BaseAccountController并实现进一步的操作
--CorporateAccountController继承自BaseAccountController并实现进一步的操作

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

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

Dmi*_*kin 5

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

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

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

使用示例:

[Closed]
public class BaseAccountController : Controller
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

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