0

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

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

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

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

4

2 回答 2

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

于 2012-08-07T02:19:17.130 回答
0

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

于 2012-08-07T05:46:52.520 回答