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);

        }