5月12日(火)1、2コマ目
今日の予習
SessionExtensions.cs
HttpContext.Sessionは
- byte[]
- int
- string
しか格納することができない。XXクラスや、List<>のインスタンスのようないろいろなクラスのインスタンスを格納できるように、拡張クラスという仕組みを使ってSessionクラスを拡張する。
今日、やったこと
- Sessionオブジェクト 練習問題7
- Sessionオブジェクト 練習問題8
- 拡張Sessionオブジェクト
今日のホワイトボード
Sessionオブジェクト 練習問題7
正解例をあげておきます。
Program.cs
Sessionオブジェクトを使うための設定が必要。
Ipad.cs
iPad情報受け渡し用クラス。
Index.cshtml.cs
SessionオブジェクトはHttpContext.Sessionでアクセス可。
HttpContext.Sessionは宣言、インスタンス生成不要。
Index.cshtml
ここでもHttpContext.SessionでSessionオブジェクトにアクセス可。
Sessionオブジェクト 練習問題8
正解例をあげておきます。
Program.cs
Sessionオブジェクトを使うための設定が必要。
Item.cs
寿司情報受け渡し用クラス。
Index.cshtml.cs
松竹梅、数量は未選択、未入力の可能性あり。OnPost()の引数はnull許容に。
Index.cshtml
松竹梅はラジオボタン。同じグループから1つだけ選択可能。
同じグループ=name属性が同じ
拡張Sessionオブジェクト
Sessionオブジェクトにデータを格納するためのメソッドは、HttpContext.Sessionには
- Set(string key, byte[] value)
- SetInt32(string key, int value)
- SetString(string key, string value)
の3つしかなく、xxxクラスのインスタンスをSessionオブジェクトに格納できない。
そこで以下のSessionExtensions.csにて、拡張メソッドという仕組みを使ってSessionオブジェクト(厳密にはISessionインタフェース)にxxxクラスのインスタンスを格納、取り出すためのメソッドを追加する。
SessionExtensions.cs
サンプルアプリケーション
下図のように、選択されたうどん情報を表形式で表示する。
|
| 図 サンプルアプリケーション |
表形式で表示するには、うどんの名前と数量を別々に扱えた方がいい。
そこで、Sessionオブジェクトに選択うどん情報(うどんの名前、数量)のクラスのリストを保存する。
Program.cs
セッションを使う設定が必要。上記の練習問題7と同じ。
SessionExtensions.cs
SelectedItem.cs
選択されたうどん、入力された数量をまとめて扱うためのクラス。
Index.cshtml.cs
SessionExtensions.csでISessionインタフェースに追加したGet<T>()メソッド、Set<T>()メソッドを使ってSesionオブジェクトにList<SelectedItem>クラスのインスタンスを格納、取得している。
|
| 図 拡張SessionオブジェクトのGet<>()メソッド |
Index.cshtml
ここでも拡張Sessionオブジェクトを利用。
名前空間
Javaのパッケージと同じ。
異なる名前空間のクラスは以下のいずれかでアクセス。
- 名前空間.クラス名
- using 名前空間で名前空間をインポート
|
| 図 名前空間 |
次回は
拡張Sessionオブジェクトの練習問題。
おやすみなさい。


