0

私のプロジェクトでは奇妙な問題に直面しています。私のアクションは、Request.Paramsにある実際の値ではなく、古いパラメーター値を取得しています。それを説明するためにHomeController.Echo(string text)アクションを作成しました(スクリーンショットを参照)。「Home/Echo?text = aaa」のように初めてアクションを呼び出すと、すべて正常に機能します。同じアクションを異なるテキスト値( "Home / Echo / text = bbb")で2回呼び出すと、アクションの"text"パラメーターで古い"aaa"値が再び取得されます。奇妙なことに、Request.Paramsには正しい「bbb」値が含まれています。

自分を壊すことができるものがあるかと思っていますが、何もわかりません。IoCコンテナーからコントローラーを提供し、ControllerActionInvoker.InvokeActionMethodWithFiltersメソッドをオーバーライドして(IoCからフィルターに依存性を注入するため)、HttpApplication.AuthenticateRequestを処理しています。私はこれらのいずれかでとにかくparams/bindingを使用していません...

スクリーンショット

4

3 に答える 3

0

アプリケーションをデバッグして、値が切り替えられている場所を確認しましたか。テキスト変数 (コード内で何を呼び出しても) を単純に監視すると、変数が変更された場所が表示されます。実行するコードがなければ、どこで発生しているのかわかりません。

私はテストを書くと思いますが、UI がここで干渉する可能性はまだあります。コードのどこが変更されているかを見つけたら、テストを書いてバグを確認し、それを試してみてください。

于 2009-03-12T17:54:49.437 に答える
0

問題を切り分けるまで、オーバーライドしたすべてのメソッドにコメントを付けることをお勧めします。最悪の場合、ASP.NET MVC ウィザードがプロジェクトを作成したときにプロジェクトを終了し、パラメーター バインドが確実に機能するポイントに到達します。

于 2009-03-12T17:56:08.997 に答える