从ASP.NET MVC站点中的ResultExecutingContext访问控制器方法

时间:2010-08-12 05:55:33

标签: c# asp.net asp.net-mvc attributes httpcontext

我正在编写一个属性,我希望在该类上访问一个方法,该方法具有其动作之一的属性派生的控制器。这真是令人满口,所以让我解释一下:

  • 我的控制器派生自一个具有以下签名的方法的类:protected bool IsSearchEngine()(基类本身派生自Controller
  • 我的控制器上的一个操作有一个属性
  • 该属性派生自ActionFilterAttribute并重载OnResultExecuting
  • OnResultExecuting方法有一个ResultExecutingContext参数。

如何通过IsSearchEngine()访问ResultExecutingContext


更新:到目前为止,我已经让编译器和智能感知接受了这个:

(filterContext.Controller as MyAssembly.Controllers.BaseControllerClass).IsSearchEngine()

这是正确的方法吗?我还没有测试过它。

1 个答案:

答案 0 :(得分:1)

通过将resultExecutingContext.Controller强制转换为BaseController,您可以通过基本控制器的所有属性和方法进行访问,但您无法访问方法IsSearchEngine()的保护级别。如果您按IsSerchEngine()声明public,则可以将其称为((BaseController)resultExecutingContext.Controller).IsSearchEngine()