8月18日(火)1、2コマ目
今日、やったこと
セッション
今日のホワイトボード
(おさらいだけど)HTTPはリクエスト・レスポンスで完結
HTTPはリクエスト・レスポンスで完結する。同じクライアントからの複数のリクエストでサーバー側にデータを共有する仕組みはない。
実際は、リクエストをまたいだデータ共有ができないのは不便なので、アプリケーションサーバー(HTTPサーバーではなく、Webアプリケーションを実行する環境)で実現している。多くの環境ではセッションオブジェクトと呼んでいる。
|
|
図 HTTPの特徴、セッションオブジェクト |
Razorページでのセッション
セッションオブジェクト取得
~.cshtml、~.cshtml.csにて
HttpContext.Session
で取得可能。
セッションにデータを保存、取り出し
取得したセッションオブジェクトの以下のメソッドを使う。
〇保存する
| メソッド | 引数 | 戻り値 | 役割 |
|---|---|---|---|
| void SetInt32(string key, int value) |
key:保存データの名前 value:保存データ |
なし | int型データをセッションオブジェクトに保存する |
| void SetString(string key, string value) |
key:保存データの名前 value:保存データ |
なし | string型データをセッションオブジェクトに保存する |
〇取得する
| メソッド | 引数 | 戻り値 | 役割 |
|---|---|---|---|
| int GetInt32(string key) | key:取り出す保存データの名前 |
なし | セッションオブジェクトから名前keyをint型として取り出す |
| string SetString(string key) | key:取り出す保存データの名前 |
なし | セッションオブジェクトから名前keyをstring型として取り出す |
|
|
図 セッションオブジェクトにデータ保存、取り出し |
サンプルアプリケーション
以下を作成した。
〇Startup.cs
セッションオブジェクトを使うための設定をおこなう。
〇Index.cshtml
Index.cshtml.csでセッションオブジェクトに格納した選択商品一覧を取得し、表示。
ただし、取得データがnullの場合があるため、@ifコードブロックで対応。
〇Index.cshtml.cs
選択された商品をセッションオブジェクトに保存する。
作ってみよう その1
以下を作った。ポイントは最下部にある選択商品一覧。
商品を選択するたびに一覧が増えていく。
過去の選択商品も表示するためにセッションオブジェクトに選択商品を追加していく。
|
|
図 作ってみよう その1 |
〇Startup.cs
サンプルと同じ。
〇Index.cshtml
基本的にはサンプルと同じ。
〇Index.cshtml.cs
基本的にはサンプルと同じ。
作ってみよう その2
その1に数量の合計を追加。
|
| 図 作ってみよう その2 |
数量=過去の数量 + 今回入力した数量
となる。過去の数量を保存する必要があるので、セッションオブジェクトに保存する。
数量は整数値なので、GetInt32()、SetInt32()メソッドを利用する。
〇Startup.cs
サンプルと同じ。
〇Index.cshtml
〇Index.cshtml.cs
予告
セッションオブジェクトまでやってようやくWebアプリケーションを作ることができます。ということで、そろそろ評価に使える課題を出したいと思います。




コメント