情報応用演習Ⅰ(2024)

【T4b】モデルとビューの連携(後編)(5/6)

プロジェクトタイプ(注意: 本文参照)
プロジェクト名T4b
ソリューション名PIT4
注意
  • 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
    • 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
    • プロジェクトの作成作業については準備作業を参照せよ.

4b-5. 入力欄の初期値とモデルクラスの初期値

現状では図4b-3-2に示したように,入力欄に「0」があらかじめ入力された状態で表示される. この入力欄の初期値の「0」はView()メソッドに渡したHealthInfoクラスのインスタンスの値に基づいている.

実行結果(再掲)

リスト4b-4-1の現状のHealthInfoクラスでは,特にコンストラクタなどを定義していない.このような場合, フィールドやプロパティは「その型のデフォルト値」で初期化される. int 型や double 型のような数値型の場合, デフォルト値はゼロである. モデルクラスのインスタンスの各フィールド/プロパティに特定の値をセットしてから View()メソッドに渡せば,入力欄に初めからその値が入力された状態で表示させることもできる

たとえば「体重(kg)」の入力欄に80,「身長(cm)」の入力欄に170があらかじめ入力された状態でフォームを表示するには HealthInfoクラスのインスタンスの各プロパティにあらかじめこれらの値を代入しておけばよい.試しに, GET用Index()メソッド(引数なしのほう)に_に示す内容を追記してみよう.

HomeControllerへの追記内容
1
2
3
4
5
// Indexアクション(GET用)
public IActionResult Index()
{
    return View(new HealthInfo() { Weight = 80, Height = 170 });
}

ここまで書けたら実行してみよう.すると_に示すように,体重の入力欄に80,身長の入力欄に170という値が 初めから入力された状態で表示されるはずである.

実行結果

リスト4b-4-3の末尾(14行目)で,メソッドの引数として渡されたHealthInfoクラスのインスタンス, すなわちユーザーが入力した体重と身長の入力値をView()メソッドに渡しているのは,入力された値を 維持するためである(ただし,このような対応をしなくても表示しているページと同じページへのPOSTであれば, 入力値を維持するウェブブラウザも多い).

Last updated on 2024-04-24
Published on 2024-04-24

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.