1

我有一个继承自BaseController类的控制器。这个BaseController有一个受保护的属性currentUser,它的类型是myUser

我创建了一个“自定义操作过滤器属性”,我需要在这个属性的OnActionExecuting()事件中访问myUser的值。

这可能吗?如果是这样,我该如何实现这个功能?

问候。

4

2 回答 2

2

您必须覆盖将传入“ActionExecutingContext”对象的 OnActionExecuting 方法。

该对象有一个属性 Controller,即当前控制器。您可以检查它是否属于所需的类型。

所以:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
  MyUser currentUser = null;

  var controller = filterContext.Controller as BaseController;
  if (controller != null) {
     currentUser = controller.CurrentUser;
  }
}
于 2015-01-07T14:29:49.930 回答
2

是的,您可以这样做,但首先您必须将 currentUser 属性从受保护转换为公共或通过只读属性或方法公开它。

然后您可以使用以下方式访问它

var baseController = filterContext.Controller as BaseController;
if (baseController != null) {
    //Access your exposed **public** property or method
    baseController.currentUser 
}
于 2015-01-07T14:39:04.773 回答