コントローラーを持っていることを想像してください
1) 長い操作を開始し、セッションに何かを書き込み、すぐにユーザーフレンドリーなメッセージをレンダリングするアクション:
public ActionResult Search(string query)
{
_searchProvider.Ready += SearchResultReady;
_searchProvider.Request(query);
Session["query"] = query;
return Results();
}
private void SearchResultReady(IEnumerable<IObject> results)
{
Session["searchResult"] = results.ToList();
}
「検索」が完了すると、結果が保存されSession
ます。
これを行う理由は、準備ができたときに結果を表示するためです ( でリクエストする必要がありますajax
) 。
public ViewResult Results()
{
if (Session["searchResult"] == null)
return View("Wait");
var query = Session["query"] as string;
var list = Session["searchResult"] as IList<IObject>;
var model = new ResultModel(query, list);
return View("Results", model);
}
ここでの問題は、Ready イベントで、Session
が nullであることです。
リクエスト間でコントローラーの状態を保存する適切な方法は何ですか?