У меня есть требование, где мне нужно динамически инициализировать и вызывать метод действия на контроллере. Я использую внедрение зависимостей, чтобы получить экземпляр контроллера, а затем создаю контроллер контекста, как показано ниже. Когда я следую этому подходу, «OnActionExecuting» в ACustomAttribute вообще не срабатывает.
var aController = ServiceLocator.Current.Resolve<AController>();
aController.ControllerContext = new ControllerContext(this.Request.RequestContext, aController);
aController.PostActionMethod();
//Action method has an attribute.
[ACustom]
public ActionResult PostActionMethod() {}
//Custom attribute looks like this
public sealed class ACustomAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
////Doesn't trigger...
}
}
С другой стороны, если я вызываю PostActionMethod непосредственно со стороны клиента ajax, то запускается ACustomAttribute, и все работает нормально.
Есть идеи, что я делаю неправильно, когда вызываю его динамически?