0

コントローラーアクションの開始時にいくつかの「もの」をセットアップし、ページがレンダリングされた後に破棄したいと考えています。「OnActionExecuting」および「OnResultExecuted」フィルターをオーバーライドすることでこれを達成しました(MVC 2を使用しています)。

現時点で私が抱えている大きな疑問は、これら 2 つのフィルターがどの程度確実に呼び出されるのかということです。

その答えが 100% ではない場合、これを進める最も簡単な方法は、いくつかのカスタム フィルターを使用することだと思います (それらの順序を「最初」と「最後」に指定します...

4

3 に答える 3

3

100% の時間。MVC パイプラインの一部です。そうしないと、 のかなり大きなセキュリティ ホールになりAuthorizeAttributeます。

于 2011-09-29T13:24:06.260 に答える
1

絶対的な信頼性が必要な場合は、クリーンアップフィルターをIExceptionFilterとして実装し、OnResultExecutedオーバーライドと同じクリーンアップコードを実行することをお勧めします(最初に実行されていないことを確認した後)。必要な「クリーンアップ」の種類によっては、HandleErrorAttributeを使用できる場合があります。これにより、結果がエラービューのViewResultに置き換えられるだけなので、OnResultExecutedを実行できます。

于 2011-09-29T13:35:57.793 に答える
0

組み込みフィルターが確実に呼び出されない場合、なぜカスタム フィルターの方が優れているのでしょうか?

コードの優れた点は、理解すれば、同じ入力が与えられた場合、毎回まったく同じことを行う傾向があることです。

于 2011-09-29T13:25:19.513 に答える