4

別のコントローラー アクション (メソッド) 内から特定のコントローラー アクション (メソッド) を呼び出そうとすると、呼び出しているアクションに適用されている属性が適用/適用されません。

たとえば、次のようにいくつかの属性が適用された Controller アクションがあるとします。

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

次に、このアクションを別のコントローラーアクションから呼び出します。属性は実行/適用されません。

MVC は、「ActionInvoker」のデフォルト実装内でこれらの ActionFilterAttribute/ActionMethodSelectorAttribute の実行を管理しているようですが、残念ながら、ActionInvoker を直接使用すると、アクション メソッドの結果は返されず、単にアクションを呼び出して直接書き込みます応答ストリームに。

私の目標はこれです:

  1. 特定のアクション メソッドを呼び出す
  2. 属性を適用/実行する
  3. アクションメソッドから結果を取得する

1と3は出来ましたが、2は出来ませんでした。

4

1 に答える 1

3

ActionInvoker を明示的に通過することを試みることができます。これは通常どおりアクションを実行するオブジェクトですが、MVC パイプラインによって呼び出されます。ソース アクションで、次のようにします。

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

これはうまくいくかもしれませんが、アクション名を文字列として導入することは良いことではありません。

于 2013-08-29T11:44:22.990 に答える