私のコントローラの初期化機能で、呼び出されるWHICH関数を決定したいと思います。たとえば、ルートでController:MyFunction
が呼び出されるように指示されている場合、初期化関数内からその値をオーバーライドし、たとえばMyFunction2
を呼び出したいとします。どうすればこれを達成できますか?MVC:コントローラ初期化機能内の新機能へのリダイレクト要求
これがなぜ必要なのかをよりよく理解するためには、私の現在のシナリオがあります。
私はカスタマーコントローラを持っています。顧客には製品のリストがあります。顧客が特定の製品を持っている場合、私は追加のナビゲーション要素を追加して新しい機能を処理できるようにしたいと考えています。そこでここでは擬似コードで
は、それが
Receive request
Check if request matches any specialisation classes we have
If (match) then call SpecialClass::SpecificRequestFunction
私はすべての顧客の事を扱う標準の顧客のコントローラを持つことができますが、この方法で作業したいどのように私は考えているである私は、それらの製品のための専門が必要な場合は、Iそのコードを再利用することのすべての利点と共に顧客管理者を使用し続けることができますが、それに特産品を加えることができます。
これは意味があると思います。
ああこれは完璧に見えます! 1つの質問: 'RedirectToAction'は実際にユーザーをリダイレクトしますか、それとも単に新しいアクションを呼び出すのでしょうか?私はこの間にURLがまったく同じになるようにしたい。ありがとう – Chris
URLをそのまま維持するのではなく、RedirectToActionがURLを実際にリダイレクトします。これをどうやって回避しますか? – Chris
これを回避するには、オプション3(コントローラに到達する前にリクエストをインターセプトする)を実行するか、元のルートのアクション内からアクションを実行します。 –