4

当我尝试从另一个控制器操作(方法)中调用特定的控制器操作(方法)时,已应用于我正在调用的操作的属性不会被应用/强制执行。

例如,如果我有一个控制器操作,其中应用了一些属性,如下所示:

[Authorize]
[HttpPost]
public ActionResult SaveUsers(List<User> users) { .. }

然后我从另一个控制器操作中调用此操作,属性未执行/强制执行。

MVC 似乎在其“ActionInvoker”的默认实现中管理这些 ActionFilterAttribute/ActionMethodSelectorAttribute 的执行,但不幸的是,当您直接使用 ActionInvoker 时,它不会返回操作方法的结果,而是简单地调用操作并直接写入到响应流。

我的目标是

  1. 调用特定的动作方法
  2. 具有强制/执行的属性
  3. 从 action 方法中获取结果

我设法做到了1和3,但没有做到2。

4

1 回答 1

3

您可以尝试显式地通过 ActionInvoker。这是正常执行您的操作的对象,但它由 MVC 管道调用。在您的源操作中,执行以下操作:

this.ActionInvoker.InvokeAction(this.ControllerContext, "TargetActionName");

这可能有效,但是您将操作名称作为字符串引入,这不是一件好事。

于 2013-08-29T11:44:22.990 回答