4月13日(木)1、2コマ目

今日、やったこと

  • GETコマンドとPOSTコマンドリクエスト時の違い
  • インスタンス生成
  • リクエスト時の処理

今日のホワイトボード

GETコマンドでリクエストすると

デバッグ実行やブラウザにURLを入力してページを表示する、リンクをクリックするとHTTPのGETコマンドでリクエストする。

GETコマンドでリクエストされるとOnGet()メソッドが動く。

図 GETコマンドでリクエスト=>OnGet()が動く


POSTコマンドでリクエストすると

ボタンクリックすると、HTTPのPOSTコマンドでリクエストする。

このとき、<form></form>内で入力、選択した内容も一緒に送信される。

POSTコマンドでリクエストするとOnPost()メソッドが動く。

クライアントから送信されたデータはOnPost()の引数で受け取ることができる。

なお、引数名とname属性値を一緒にする必要がある。

図 POST困んでリクエスト=>OnPost()が動く


インスタンス生成

ちょこちょこ登場するインスタンス生成とは、メモリ上にクラスに必要なエリアを確保すること。

下図では、 new Item() でItemクラスのインスタンスを生成している。

図 Itemクラスのインスタンス生成

XXクラス型の変数はXXクラスに必要なサイズではない。インスタンス生成されて確保されたXXクラスのエリアへの参照情報が格納される。ポインタ変数。


下図では ItemList.Add( ) でItemListに Itemクラスのインスタンスを追加している。

Add()の引数には new Item(xx, xx, xx) となっている。Itemクラスのインスタンスを生成し、Add()メソッドに渡している。

図 ListクラスのItemListにItemクラスのインスタンスを追加


リクエスト時の処理

.Netでは、リクエスト毎にOnGet()やOnPost()のあるクラスのインスタンスを生成している

1回目のリクエスト(下図ではGETコマンドでリクエスト)

①IndexModelクラスのインスタンスが生成

②OnGet()メソッドが動く

ここでItemListプロパティにListクラスのインスタンスが生成、セットされ、Itemクラスのインスタンスが追加される。

2回目のリクエスト(下図ではPOSTコマンドでリクエスト)

①IndexModelクラスのインスタンスが生成

②OnPost()メソッドが動く

OnGet()が動いていないため、ItemListプロパティはnullのまま。よって、エラー発生!!

図 リクエスト毎にインスタンスが生成される


エラー発生版

Item.cs

商品情報受け渡し用クラス。

商品情報の文字列を生成するToString()メソッドがある。

なお、ToString()メソッドには override をつける必要あり。(理由はそのうち話します)

 

Index.cshtml.cs

OnGet()メソッドにてItemListプロパティのインスタンス生成、要素追加をしている。


Index.cshtml

とくにややこしいことはないかと。


エラー解消版

変更したのはIndex.cshtml.cs。

コンストラクタ追加

コンストラクタにてOnGet()メソッドでやっていたItemListプロパティのインスタンス生成、要素追加



このブログの人気の投稿

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

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

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