6月7日(火)1、2コマ目

今日の予習

ISessionを拡張

セッションオブジェクトはISessionクラス。データとして保存できるのは

  • byte[]
  • int
  • string

のみ。使いずらいので、ISessionクラスに拡張メソッドを追加して対応。


ISessionに以下の2つの拡張メソッドを追加しています。

T Get<T>(string key)

void Set<T>(string key, T value)

Tはセッションオブジェクトに格納するモノの型


今日、やったこと

Sessionオブジェクトにいろいろな型のデータを格納する

今日のホワイトボード

拡張メソッドのGet<T>()、Set<T>()

図 拡張メソッドのSet<T>()、Get<T>()

作成したサンプル

セッションオブジェクトにSelectedItemクラスのListを格納する。

Startup.cs

前回と同じようにSessionオブジェクトを使うための設定を行う。

SelectedItem.cs

選択データ(商品名、松竹梅、数量)をまとめて格納するためのクラス。

SessionExtensions.cs

通常のSessionオブジェクトであるISessionにGet<T>()メソッド、Set<T>()メソッドを拡張メソッドとして追加する。
上のサンプルと同じ。

Index.cshtml.cs

OnPost()メソッドにて、拡張メソッドのGet<T>()、Set<T>()を使っているところがポイント。
Set<T>()、Get<T>()のTにはセッションオブジェクトに格納するデータの型を指定する

Index.cshtml

ここでも拡張メソッドのGet<T>()を使ってSessionオブジェクトから選択商品のリストを取得している。

プロジェクトと名前空間

プロジェクトを作成すると同名の名前空間(Java的に言えばパッケージ)ができる。プロジェクト右クリックで追加されたクラスはこの名前空間に属する。

Pagesフォルダ以下のIndexModelクラス(Index.cshtml追加でできるクラス)の名前空間はプロジェクト名名前空間.Pagesになる。

図 プロジェクトの名前空間
SessionExtensionsクラスはプロジェクト名名前空間に属する。
Index.cshtmlやIndex.cshtml.csからは名前空間が異なるため、クラス名だけではアクセスできない。
usingを使って名前空間を参照できるようにする必要がある。


このブログの人気の投稿

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

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