想象我们有一个控制器
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。
在请求之间保存控制器状态的正确方法是什么