問題タブ [onactionexecuting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - メソッドを呼び出したコントローラーでアクションを見つけるための StackTrace.GetFrame... の代替
設定:
私は、もともと Steve Sanderson のウィザード (Pro ASP.NET MVC 2 Framework) に基づいて、ASP.NET MVC ウィザードを作成しました。私のウィザードは一般的で、夢です。
ウィザードの各ステップはアクションです。
しかし、このウィザードを広範囲に使用するアプリをリリースしました。明らかに、アプリはリリース モードです。
WizardController<> クラスは、すべてのウィザードの基本クラスです。問題の解決策を提供できると思われる OnActionExecuting メソッドがあります。問題は、スタックを正しい順序でトラバースする方法、または問題は何かということです...
問題:
WizardController の奥深くにあるコードでは、次を使用します。
このコードを呼び出したアクションの名前を取得します (n は、呼び出し元のアクションであることがわかっているフレームです...つまり、デバッグ モードで)。これにより、現在どのウィザードのステップ/アクションを実行しているかを確認できます。
これはデバッグ モードでは問題なく動作しますが、リリース モードではコンパイラがコードを最適化します。したがって、 n は、スタック内の正しいフレームを表している場合と表していない場合があります。
実際には、リリース モードでは、n が正しいフレームを表していないことがあります。そして、時には十分ではありません。時々私の問題です。防弾ソリューションが欲しい。
質問:
では、スタックトレースを使用する代わりにどのような方法がありますか?? OnActionExecuting メソッドを使用して、必要なアクションの名前を取得できると思います。この名前は、ウィザードのステップを識別するものだからです。
しかし、どのように?
存在するかどうかを忘れてください。どのように?それが問題です。
asp.net-mvc - 新しいリクエストをトリガーせずにベースコントローラーの OnActionExecuting からリダイレクトする方法は?
この質問はすでにここで尋ねられています:
Base Controller で OnActionExecuting からリダイレクトする方法は?
しかし、受け入れられた回答で気に入らないのは、新しいリクエストがトリガーされることです。つまり、ベースコントローラーのロジックをもう一度実行します。したがって、ベースコントローラーでリクエストをインターセプトし、何らかの条件に基づいて、リダイレクトを発生させず、本質的に完全なリクエストパイプラインを通過することなく、実行中のコントローラー/アクションを変更する方法があるかどうかを知りたいですか? アプリケーションが適切にセットアップされているかどうかをベース コントローラーに判断させ、そうでない場合は、まったく新しい要求を発行することなく、SetupController の Index アクションに制御を移しますか?
c# - 特定のアクション タイプのデータのみをロードするためのアクション フィルタ
私はMVCのやり方に比較的慣れておらず、ベースコントローラーに多くの無関係なデータをロードするため、パフォーマンスの問題が少し発生しました。アクションフィルターについて少し読んだことがありますが、進め方についてアドバイスがあるかどうか疑問に思っていました. これが私の問題です:
BaseController と呼ばれる基本コントローラーから継承する RegController と呼ばれるコントローラーがあります。ベース コントローラーの onActionExectuting メソッドで、viewbag、viewdata などの表示ページで使用されるいくつかの変数などを読み込みます。結果の型が ActionResult のアクションに対してのみ、このようなものを読み込む必要があります。同じ RegController には、Json のみを返すページやビュー テンプレートを読み込まないため、この追加情報のすべてを読み込む必要のない JsonResult アクションもあります。既存のフレームワーク機能内でこれを適切に処理する方法について誰か提案がありますか? 代わりに、これらのアクションを別のコントローラーに配置する必要がありますか? これと同じ方法でさまざまな機能を分割した多くのコントローラーがあり、それらすべてを JsonResultController などに移動するのではなく、アクションタイプをフィルター処理できることを望んでいます。
以下のコード(一部は疑似):
vba - Excel VBA onaction で関数を呼び出せません
ユーザーフォームにOKボタンのスクリプトを書き、シートに削除ボタンを作成して行全体を削除します。問題は、削除ボタンをクリックすると、onaction パラメーターで割り当てた関数を呼び出すことができないことです。
jquery - MVC コントローラーの OnActionExecuting から History.js URL のハッシュ部分を取得する方法
History.js を使用しbrowserstate
て Ajax 経由で子パネルを変更およびロードするカスタム jQuery コントロールがあります。HTML 5 ブラウザーでは、URL が完全に変更されているため、ページの更新が機能します (現在のパネルが読み込まれます)。
ただし、IE9 以前では、状態は次のようなハッシュ値として保存されます。
/SectionPanel/ListView/3
内のハッシュ URL (例: )を抽出しOnActionExecuting
て、ページの更新時に正しい開始点にリダイレクトできるようにします (戻るボタンと進むボタンは正常に動作します)。
基本的にはこれを行いたいのですraw URL
が、ハッシュ部分も含まれていません。
このコードをブレークポイントすると、URL には基本 URL (例: /ApplicationPanel/ListView
) のみが含まれます。
MVC コントローラでハッシュ パラメータを取得するにはどうすればよいですか? プッシュ方法も変更する必要があるかもしれませんが、次のいくつかのバリエーションは役に立ちませんでした。
次のような URL を取得します。
アップデート:
これは、History.js がブラウザーの URL を操作する方法にかかっているようです。HTML 4 ブラウザーでは、サーバーが余分なデータを認識しないように、ハッシュ タグのみを変更できます。
テストとして、プラグインにハッシュ URL をチェックさせ、ブラウザをそれにリダイレクトさせました。
これはページの更新には機能しましたが、残念ながらブラウザのページの読み込みでは、ページの再読み込みと戻るボタンが押されたことを区別できません。このコードは、戻るボタンを同じ子ページに何度も送信します。
助言がありますか?