tempdataの使用
1201 ワード
tempdataは、各コントローラのAction間で一時的なデータを転送したり、Viewに一時的なデータを転送したりするための一時的なデータです.皆さんは「ASP.NETページ間で値を転送する方法は何種類あるか」という面接問題を見たことがあると思います.ASP.NET MVCにおけるTempDataはその中の1つの伝値方法である.TempDataのデフォルトではSessionを使用して一時データを格納していますが、TempDataに格納されているデータは1回のアクセスでのみ有効で、1回のアクセスが完了すると削除されます.このアクセスとは、次のリクエストが来ると、Sessionから中に保存されているTempDataデータを取り出してTempDataに付与し、Sessionからデータを削除するため、次のリクエストへのリクエストを指します.mvc 2のSessionStateTempDataProvider.csコードでは、
public virtual IDictionary<string, object> LoadTempData(ControllerContext controllerContext) {
HttpSessionStateBase session = controllerContext.HttpContext.Session;
if (session != null) {
Dictionary<string, object> tempDataDictionary = session[TempDataSessionStateKey] as Dictionary<string, object>;
if (tempDataDictionary != null) {
// If we got it from Session, remove it so that no other request gets it
session.Remove(TempDataSessionStateKey);
return tempDataDictionary;
}
}
return new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
}