- - PR -
ポストバックするとSession変数が初期化されてしまう!!
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-21 19:52
OS:WindowsXP 開発:ASP.NET
Private Shared dvList As System.Data.DataView If Not (IsPostBack) Then 'DataSourceをSession変数に格納 Session("DataSource") = dvList --@ Else dvList = Session("DataSource") --A End If @のときSession変数に格納されているデータが、 ポストバックされたとき、Aのとき初期化されてしまい Nothingが返ってきてしまいます。 初歩的なミスかもしれませんが、理由が分からないので 教えてください!!お願いします。 | ||||
|
投稿日時: 2004-12-21 20:27
> Session("DataSource") = dvList
この時点で右辺がNothingになっているとか。 | ||||
|
投稿日時: 2004-12-21 20:33
Cookieless の設定にしていないのにクライアントがクッキー食べないとか。
| ||||
|
投稿日時: 2004-12-22 09:21
todoさん・にしざきさん返答ありがとうございます。
todoさん >Session("DataSource") = dvList >この時点で右辺がNothingになっているとか ↑この時点で、dvList(右辺)はあ、Nothingになっていません。 それに、Session変数にもちゃんと格納しているのに、 ポストバックするとNothingが返ってきてしまいます。 にしざきさん >Cookieless の設定にしていないのにクライアントがクッキー食べないとか。 そうなんです!!Cookielessは。Falseで設定しています!! それに、Cookie変数は、ポストバックしても値を保持しているのです。 htpCooki = New HttpCookie("Test", "aaa") Response.Cookies.Add(htpCooki) If Not (IsPostBack) Then 'DataSourceをSession変数に格納 Session("DataSource") = dvList --@ Else dvList = Session("DataSource") --A strTest = Request.Cookies("Test").Value()--B End If ASession変数からの取得の場合 dvList=Nothing でNothingになってしまう。 BCookiesからだと、取得できる strTest="aaa" Cookieに登録した値が入ってく る。 というような状況です。 Session変数というのは、ページ遷移間の受け渡しに使用するもので、 同一のページの遷移は、ポストバックしたとき初期化されてしまうのでしょうか?? 原因が、つかめないので教えてください。!!! | ||||
|
投稿日時: 2004-12-22 09:40
Sharedと定義しているからには、何か意味があってのことでしょうか? | ||||
|
投稿日時: 2004-12-22 11:14
> dvList = Session("DataSource")
DataTableの実体がないので、DataViewが復元できないのかもれません。 DataViewではなくDataTableをSessionに保存してみては? | ||||
|
投稿日時: 2004-12-22 11:44
DataViewをSession変数に格納して利用したことがあるので、その辺は大丈夫だと思います。IISのオプション設定の「セッションの状態を有効にする」のチェックが外れていたりしていませんか?
| ||||
|
投稿日時: 2004-12-22 11:55
Label1.Text = Session.SessionID
お試し下さい。 セッション切れであれば、値が変わります。 |