- PR -

Session変数の構造体

1
投稿者投稿内容
はまち
会議室デビュー日: 2004/12/20
投稿数: 13
投稿日時: 2005-01-13 16:01
色々調べたのですが、該当するようなページが見つけられませんでした。
もし初歩的な質問でしたらご容赦ください。


<環境>
IIS6.0/IE6.0/C#(2003)

<やりたい事>
画面間の引継ぎ項目が多く、
保持している画面区間(子画面がたくさんある為)が多いので、
構造体のSession変数をを使いたい。

<やろうとしている事>
// 構造体定義
public struct tagKozo
{
 public string strItem01;
 public string strItem02;
 public string strItem03;
};

tagKozo kozo = new tagKozo();

// 構造体に値をセット
kozo.strItem01 = "aaa";
kozo.strItem02 = "bbb";
kozo.strItem03 = "ccc";

// Sessionに直接、構造体をセット
Session["ssnKozo"] = kozo;

// Sessionにセットされた値を書き出す。
Response.Write(Session["ssnKozo"].strItem01)
// ↑'object' に 'strItem01' の定義がありません。
Response.Write(Session["ssnKozo"].strItem02)
Response.Write(Session["ssnKozo"].strItem03)

<質問>
「'object' に 'strItem01' の定義がありません。」
とエラーメッセージがでます。
「Session["ssnKozo"].strItem01」の記述をコメントにすると
クイックウォッチで、値が入っていることは確認できるのですが、
セットした値を取得できません。
もしかして、Sessionの方も構造体の定義か何かしなければならないのでしょうか?
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2005-01-13 16:13
キャストしてみましょう。
((tagKozo)Session["ssnKozo"]).strItem01
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-01-13 16:18
引用:

Response.Write(Session["ssnKozo"].strItem01)
// ↑'object' に 'strItem01' の定義がありません。


たぶん、このコードを入力したときには、インテリセンスが効かなかったのではないかと思います。
そういうときは、そのオブジェクトの型情報がVisualStudioにとって不明確になっているということですから、noderaさんの書いたキャストが必要になると判ります。

_________________
たつごろー
codeseek
こみゅぷらす
はまち
会議室デビュー日: 2004/12/20
投稿数: 13
投稿日時: 2005-01-13 16:33
noderaさん
たつごろーさん
早速、ありがとうございます。

おかげさまで解決致しました。
お二方の仰るとおり
「((tagKozo)Session["ssnKozo"]).strItem01」
で、値を取得できました。
1

スキルアップ/キャリアアップ(JOB@IT)