Microsoftのチュートリアル「ASP.NET Core を使用して Web UI を作成する 」が程よい難易度で面白かったのでメモ
学習内容は、Hello world的なページに上記のようなピザの一覧ページと入力フォームを追加するまでを学ぶ。
シナリオ
あなたはContoso Pizza という名前のピザ会社の従業員で、ピザの在庫管理ページを開発するように依頼されたという設定で始まる。チームメイトがすでにGithubにASP.NET Core Web アプリのひな形を作成しており、git cloneで複製して開発を進めていく。
面白い点
開発にはVS Codeを使う。Visual Studioではないのかと、少しがっかりしていたが、VS Codeでサクサク作れた。下図のようにSQLiteのデータベースが既にあって元からデータが入っていることもあり、少しの作業でどんどん機能を追加できる。
また、donet watchというコマンドを使えば、localhostのWebページを起動してくれるし、VS Codeで保存した内容がリアルタイムに反映されるので面白い。挫折しないような工夫がされている。
つまずいた点
dotnet watchの反映
どんな修正でも反映してくれるわけではなく、Webアプリを再起動させた方が良い修正もあるようだ。下記のようなエラーが出てデバッグをしたが、コードの記述誤りではないのに解決しなかった。何かのタイミングでWebアプリを閉じて起動させたら何事もなかったように表示された。
InvalidOperationException: Multiple constructors accepting all given argument types have been found in type 'ContosoPizza.Pages.PizzaListModel'. There should only be one applicable constructor.
VS Codeを開く階層
チュートリアルは下図のようにすごく丁寧に記載されているので、1日で終わらせていれば間違うことはなかったが、
翌日続きをやろうとした際に、「ContosoPizza」配下でVS Codeを開いてしまった。それにより、dotnet watchコマンドを実行すると、下記のエラーが出てWebアプリが起動しなかった。
MSBUILD : error MSB1011: このフォルダーは 2 つ以上のプロジェクト ファイルまたはソリューション ファイルを含んでいるため、使用するプロジェクト ファイルまたはソリューション ファイルを指定してください。
ContosoPizza.csproj以外にもプロジェクトファイルがあるのかと思ったが、特に見つからない。ContosoPizza.generated.slnというファイルの更新日付が今日になっていることに気づいた。Githubのリポジトリを見たら存在しないファイルだったため、このファイルを削除してdotnet watchを実行すると無事Webアプリは起動した。
VS Codeを開いた階層に.slnファイルが存在しないと自動生成されるようだ。
よくわからなかった箇所
チュートリアルに沿って作業をしたため、全体的に把握できているわけでもないが、「タグ ヘルパー」と「ページ ハンドラー」が何の役にたつのかがよくわかっていない。
- タグ ヘルパー
- ページハンドラー
- ページ ハンドラーは、ユーザーが送信したデータを検証したり、無効な場合は入力フォーム ページを再度表示したり、有効なデータを永続化のためにサービスやデータベースに送信したりできます。
最後の練習のところで、登場しているらしい。
この箇所に限らず、もっと練習をして把握をしたい。