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オブジェクトを使うための設定が必要。

練習問題7とおなじ


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オブジェクトの練習問題。



















おやすみなさい。




このブログの人気の投稿

4月28日(火)1、2コマ目

4月14日(火)1、2コマ目