質問: ### 前提・実現したいこと ASP.NET MVC5で下記の画面を実装したいです。 Searchビュー:検索条件を入れて、検索する画面 Indexビュー:検索結果を表示し、結果をエクスポートする機能(ボタン)がある画面 操作・処理の流れとしては、 1Searchビュー用のGETメソッド 2Searchビュー表示 3検索条件入力&検索ボタン押下 4Searchビュー用のPOSTメソッド(モデルバインド用引数付き) 5Indexビュー表示 6CSV出力ボタン投下 7Csvアクションメソッド(CSV出力用のメソッド) のようになります。 4でLINQのWhere句でデータを絞り込んでいるので、 そのデータをそのまま使用して7の処理を行いたいです。 ### 試したこと 5のIndexビューで使用したModel(@Modelで型宣言したもの) を7のアクションメソッドにモデルバインドで渡そうとしましたが、 代入はされませんでした。 メソッドの引数をCsv(Byval model as IEnumerable(Of モデルの型))にしてみました。
回答: web アプリはステートレスであることを強く意識してください。 (5) の時点では、その応答を返すためにサーバーのメモリにロードした全て (もちろん model を含む) は消去されます。 (6) でボタンを押す時点ではサーバーには何も (もちろん model も) 存在しません。なので、(4) のアクションメソッドで生成したデータを (7) のアクションメソッドで使うなんてことはできません。 このステートレスなところをステートフルにする仕組みはあって、このケースで ASP.NET であればSession を使うことを検討してみてください。 Session を使うことに抵抗があれば、(7) で再度 DB にクエリを投げて、必要なデータを再取得する他ありません。