全て、
次の呼び出しを行うMVC_Layout.cshtmlがあります。
@Html.Action("GetActionStrip", "Vehicles")
いくつかのビューをロードするコントローラーもあります。
私の問題は、IDで車両を取得するGetVehicleDetailsというコントローラーアクションがあることです。
アクション:
@Html.Action("GetActionStrip", "Vehicles")
GetVehicleDetailsは、車両IDをセッションに入れる必要があるため、最初にロードする必要があります。
これは次のようには機能しません:
@Html.Action("GetActionStrip", "Vehicles")
GetVehicleDetailsの前にロードします。
@Html.Action("GetActionStrip", "Vehicles")
複数のビューに配置する必要があるため、_Layoutファイルに配置しました。
私はそれを置くことによってそれを動かすことができます:
@Html.Action("GetActionStrip", "Vehicles")
すべてのビューでそれをオンにする必要があり、正しい順序でロードされます。つまり、コントローラーアクションGetVehicleDetailsは、車両IDをセッションに設定してから、次のようにします。
@Html.Action("GetActionStrip", "Vehicles")
セッション値を読み取ります。
私が望む方法でそれを行うことができるかどうか、またはDRYの原則に違反するすべてのビューに@ Html.Actionを配置する必要があるかどうか、誰かが何か考えを持っていますか?
ありがとうRuSs
ポール、私はあなたにコメントを書こうとしましたが、文字数制限が私を殺しました。これが私のコメントです:
ポール、
メッセージをありがとう。私はあなたが書いたことを理解していますが、続行してこのようなものを実装しようとする前に、シナリオを完全に理解していることを確認したいと思います。
あなたのシナリオは、セッション値を必要とするコードが私の_Layout(いわばマスターページ)の@ Html.Actionから呼び出されるのに対し、コントローラーがパラメーターを受け取り、このパラメーターをセッションに設定するためのアクションを取得する必要があるという事実に対応しますか? 。
私の理解では、_Layouts(マスターページ)が最初に読み込まれるため、@Html.Actionが実行されてセッション値が検索されます。ただし、このコードは_Layoutにあるため、最初に実行されるため、コントローラーのGETは、パラメーターで渡されたアクションからのセッションをまだ設定していません。
注:私の_Layoutには独自のコントローラーがありません(これが重要かどうかはわかりません)
ありがとうRuSs