MicrosoftのWeb作成チュートリアルをやってみた

MicrosoftチュートリアルASP.NET Core を使用して Web UI を作成する 」が程よい難易度で面白かったのでメモ

学習内容は、Hello world的なページに上記のようなピザの一覧ページと入力フォームを追加するまでを学ぶ。

シナリオ

あなたはContoso Pizza という名前のピザ会社の従業員で、ピザの在庫管理ページを開発するように依頼されたという設定で始まる。チームメイトがすでにGithubASP.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日で終わらせていれば間違うことはなかったが、

https://learn.microsoft.com/ja-jp/training/modules/create-razor-pages-aspnet-core/3-exercise-customize-project

翌日続きをやろうとした際に、「ContosoPizza」配下でVS Codeを開いてしまった。それにより、dotnet watchコマンドを実行すると、下記のエラーが出てWebアプリが起動しなかった。

MSBUILD : error MSB1011: このフォルダーは 2 つ以上のプロジェクト ファイルまたはソリューション ファイルを含んでいるため、使用するプロジェクト ファイルまたはソリューション ファイルを指定してください。

ContosoPizza.csproj以外にもプロジェクトファイルがあるのかと思ったが、特に見つからない。ContosoPizza.generated.slnというファイルの更新日付が今日になっていることに気づいた。Githubリポジトリを見たら存在しないファイルだったため、このファイルを削除してdotnet watchを実行すると無事Webアプリは起動した。

VS Codeを開いた階層に.slnファイルが存在しないと自動生成されるようだ。

よくわからなかった箇所

チュートリアルに沿って作業をしたため、全体的に把握できているわけでもないが、「タグ ヘルパー」と「ページ ハンドラー」が何の役にたつのかがよくわかっていない。

 

 

  • タグ ヘルパー
    • C# コードを含めることができる特殊な種類の HTML 要素
    • HTML と C# の間でのコンテキスト切り替えの非効率性に対処するために使用
  • ページハンドラー
    • ページ ハンドラーは、ユーザーが送信したデータを検証したり、無効な場合は入力フォーム ページを再度表示したり、有効なデータを永続化のためにサービスやデータベースに送信したりできます。

 

最後の練習のところで、登場しているらしい。

この箇所に限らず、もっと練習をして把握をしたい。