对于我的几个控制器,我有一个实现常见操作的基类。
e.g。
- BaseAccountController具有登录操作
- PublicAccountController继承自BaseAccountController并实现进一步的操作
- CorporateAccountController继承自BaseAccountController并实施进一步的操作
这给出了以下路线:
- BaseAccount /登录
- PublicAccount /登录
- CorporateAccount /登录
删除路由BaseAccount / Login的标准方法是什么,因为这不是必需的。我希望控制器上有一个属性:)
答案 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
。