将值从控制器传递到自定义操作属性过滤器
Pasing a value from Controller to Custom Action Atribute Filter
我有一个继承自 BaseController class 的控制器。此 BaseController 有一个 protected 属性 currentUser 类型为 myUser.
我创建了一个 "Custom Action Filter Attribute",我需要在此属性的 OnActionExecuting() 事件中访问 myUser 的值.
这可能吗?如果是这样,我该如何实现此功能?
此致。
您必须覆盖 OnActionExecuting 方法,该方法将传入一个 'ActionExecutingContext' 对象。
那个对象有一个属性控制器,也就是当前的控制器。您可以检查是否是所需的类型。
所以:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
MyUser currentUser = null;
var controller = filterContext.Controller as BaseController;
if (controller != null) {
currentUser = controller.CurrentUser;
}
}
是的,你可以做到,但首先你必须将你的 currentUser 属性 从 protected 转换为 public或通过只读 属性 或方法公开它。
然后您可以使用以下方式访问它
var baseController = filterContext.Controller as BaseController;
if (baseController != null) {
//Access your exposed **public** property or method
baseController.currentUser
}
我有一个继承自 BaseController class 的控制器。此 BaseController 有一个 protected 属性 currentUser 类型为 myUser.
我创建了一个 "Custom Action Filter Attribute",我需要在此属性的 OnActionExecuting() 事件中访问 myUser 的值.
这可能吗?如果是这样,我该如何实现此功能?
此致。
您必须覆盖 OnActionExecuting 方法,该方法将传入一个 'ActionExecutingContext' 对象。
那个对象有一个属性控制器,也就是当前的控制器。您可以检查是否是所需的类型。
所以:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
MyUser currentUser = null;
var controller = filterContext.Controller as BaseController;
if (controller != null) {
currentUser = controller.CurrentUser;
}
}
是的,你可以做到,但首先你必须将你的 currentUser 属性 从 protected 转换为 public或通过只读 属性 或方法公开它。
然后您可以使用以下方式访问它
var baseController = filterContext.Controller as BaseController;
if (baseController != null) {
//Access your exposed **public** property or method
baseController.currentUser
}