我有一个继承自 BaseController 类的控制器。此 BaseController 具有受保护的属性 currentUser ,其类型为 myUser 。
我创建了一个"自定义操作过滤器属性"我需要在此atrtribute的 OnActionExecuting()事件中访问 myUser 的值。
这可能吗?如果是这样,我该如何实现此功能?
问候。
答案 0 :(得分:1)
你必须覆盖OnActionExecuting方法,该方法将传入一个'ActionExecutingContext'对象。
该对象具有属性Controller,它是当前控制器。您可以检查它是否属于所需类型。
所以:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
MyUser currentUser = null;
var controller = filterContext.Controller as BaseController;
if (controller != null) {
currentUser = controller.CurrentUser;
}
}
答案 1 :(得分:1)
是的,您可以这样做,但首先您已将currentUser属性从受保护的转换为公开,或通过只读属性或方法公开它。
然后您可以使用以下
访问它var baseController = filterContext.Controller as BaseController;
if (baseController != null) {
//Access your exposed **public** property or method
baseController.currentUser
}