コントローラーのメソッドを直接呼び出す場合、ActionFilterAttribute を呼び出すにはどうすればよいでしょうか? 次のことを想像してください。
public class ApiController : Controller {
public ActionResult CallSomething() {
return IsCalled();
}
[MyAction]
public ActionResult IsCalled() {
return View();
}
}
そのため、リクエストが に入る/Api/CallSomething
と、CallSomething() メソッドは別のメソッド (この場合は IsCalled()) を内部的に呼び出しますが、そのメソッドが呼び出されると、ActionFilterAttribute が呼び出されて実行されます。
現時点では、ActionFilterAttribute は元のリクエストの一部である場合にのみ呼び出されます。これは、MVC ライフサイクル全体の一部であり、メソッドを直接呼び出すだけなので、RedirectToAction を実行する必要があるためです。 MVCによって起動させたい場合。RedirectToAction は URL を変更するため、これは私の目的には適していません。
System.Web.Mvc コードについて調べましたが、どのように、またはいつ呼び出されるのかわかりません。それができれば、リフレクションを使用できる可能性があると思います。このイベントでは、ExecuteResult() をオーバーライドして独自のコンテンツを http 応答に書き込むため、ビューは関係ありません。
とにかく、これはおそらく不可能だと諦めましたが、試してみる価値があると思いました.