如何知道使用ActionExecutingContext对象执行哪个操作?

时间:2010-07-08 12:12:59

标签: asp.net-mvc filter

我在执行所有操作方法之前执行此操作过滤器。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
  //code omitted 
  UpdateModel(MyModel);
}

我希望此操作在执行 A,B,C 操作时更新模型,而不是 D 。当D执行时,如何防止此过滤器操作更新模型?那么有可能知道使用上面的 ActionExecutingContent filterContext 吗?

由于

2 个答案:

答案 0 :(得分:2)

您可以通过使用属性修饰操作A,B和C,而不是D。

你已经收到了答案,但按照你的意图这样做真的很糟糕。如果其他人在另一个控制器中写入操作方法应该运行,然后偶然选择一个已经过滤掉的名称,该怎么办?该属性将不会运行 - 一个明显的错误 - 但它将完全按照它被告知。这将是一场维护噩梦。

不,这样做的干净方法是将属性的应用程序从控制器级别移动到所有控制器的操作方法级别,其中存在不应具有此属性的操作方法。这样就可以很容易地看到,只需查看控制器代码,何时运行属性,何时运行,并且它将按预期工作。

答案 1 :(得分:1)

filterContext.ActionDescriptor.ActionName