6月9日(火)1、2コマ目
今日、やったこと
[サンプルアプリケーション作成]ショッピングサイト的なサイト
[練習問題]Cartクラスをつかう その1
今日のホワイトボード
[サンプルアプリケーション作成]ショッピングサイト的なサイト
前回のつづき。
Sessionオブジェクトに格納、取り出す際に
SessionExtensionsのGet<>()メソッドで、要素をシリアル化して、文字列化して、Sessionオブジェクトに格納している。
Sessionオブジェクトから取り出すのは文字列。文字列とキーを使って、元のクラスのインスタンスを再現する(逆シリアル化)。このとき、コンストラクタがオーバーロードされている場合、実行すべきコンストラクタを[JsonConstructor]アノテーションで指定する。
![]() |
| 図 シリアル化、逆シリアル化 |
削除ボタン
どの商品を削除すべきか、削除ボタンのvalue属性にセットする。
商品のIDは重複する可能性があるので、行番号的なデータを使う。
![]() |
| 図 削除ボタンのvalue属性 |
各行の商品に割り当てられる行番号的なデータはCartクラスで管理する。
シリアル化+privateなメンバ
シリアル化の際、privateなメンバは無視される模様。
[JsonInclude]アノテーションを付与すると、シリアル化対象になる。
![]() |
| 図 privateなメンバもシリアル化 |
正解例をあげておきます。
Program.cs
Sessionオブジェクトが使えるように設定。いままでどおり。
SessionExtensions.cs
Item.cs
コーヒー、食べ物情報を受け渡すためのクラス。
SelectedItem.cs
選択されたコーヒー、食べ物情報を受け渡すためのクラス。
読み取り専用の小計用プロパティ(SubTotalプロパティ)が新ネタ。
Cart.cs
ショッピングカート的なクラス。
選択済み商品に付与する行番号的データはRowIdプロパティで管理。
Index.cshtml.cs
選択済み商品リストへの追加や削除はCartクラスが行うため、ここはシンプルになった。
Index.cshtml
とくにややこしいことはないかと。
ListクラスのSort()メソッド
並び替えのメソッド。
Sort()メソッドはリスト自体の要素を並び替える。よって、Sort()実行前と実行後でリストの要素の並びは変わる。=>破壊的メソッド
![]() |
| 図 ListのSort()メソッド |
破壊的メソッドと非破壊的メソッド
![]() |
| 図 破壊的メソッド、非破壊的メソッド |
[練習問題]Cartクラスをつかう その1
サンプルとほぼ同じ。ややこしくない。
正解例をあげておきます。
Program.cs
Sessionオブジェクトが使えるように設定。いままでどおり。
SessionExtensions.cs
Item.cs
コーヒー情報受け渡し用クラス。
Size.cs
サイズ情報受け渡し用クラス。
SelectedItem.cs
選択済み商品情報受け渡し用クラス。
Cart.cs
ショッピングカートのようなクラス。
Index.cshtml.cs
とくにややこしいことはないかと。
Index.cshtml
とくにややこしいことはないかと。
次回は
またまた練習問題。
次々回あたりに評価用課題をつくってもらいます。




