私はこれについて多くの質問とチュートリアルを読みました、私は私のようなケースを見つけることができませんでした。
データベースで利用可能な結果をフィルタリングするための検索フォームを内部に持つインデックスビューがあります。
インデックスビューのコントローラーアクションの簡略版は次のとおりです。
[HttpPost]
public ActionResult Index(String carMake, String carModel)
{
var cars = from d in db.Cars
select d;
if (!String.IsNullOrEmpty(carMake))
{
if (!carMake.Equals("All Makes"))
{
cars = cars.Where(x => x.Make == carMake);
}
}
if (!String.IsNullOrEmpty(carModel))
{
if (!carModel.Equals("All Models"))
{
cars = cars.Where(x => x.Model == carModel);
}
}
cars = cars.OrderBy(x => x.Make);
return View("SearchResult", cars);
}
ご覧のとおり、インデックスビューからデータを取得し、を使用せずにSearchResultビューに直接投稿しますpublic ActionResult SearchResult(){...}
。しかしpublic ActionResult SearchResult(){...}
、コントローラーにはメソッドがあります。
今、私は自分の結果をソートしようとしています。どうやってやるの?
IndexメソッドからTempDataなどの検索結果メソッドにデータを渡すためにさまざまな方法を試しました。ただし、並べ替えボタンをクリックするとページが再読み込みされ、インデックスビューフォームから取得したクエリはすべてnullになります。これは、TempDataはメソッド間でデータを渡す場合にのみ有用であり、メソッドが呼び出されると、データは失われ、すべてnullになります。
私はいくつかの解決策を考えていますが、それらがうまくいくかどうか、そしてそれらが考え出すことができる最良/最も簡単な解決策であるかどうかはわかりません。これは、インデックスページから取得したクエリをテーブルに記録しています(これを行うのは賢明なことではないと思います)。