タグ ヘルパーとページ ハンドラーについて
前のユニットでは、ピザの一覧を表示する Razor ページを作成しました。
@
シンボルを使用して、HTML と C# の間でコンテキストを切り替えました。 このユニットでは、"タグ ヘルパー" について学習します。 タグ ヘルパーは、C# コードを含めることができる特殊な種類の HTML 要素です。 "ページ ハンドラー" についても学習します。 ページ ハンドラーは、ブラウザー要求を処理するメソッドです。 次のユニットでは、ページ ハンドラーを使用してピザを追加および削除します。
タグ ヘルパー
タグ ヘルパーは、HTML と C# の間でのコンテキスト切り替えの非効率性に対処するために使用します。 ASP.NET Core のほとんどの組み込みタグ ヘルパーにより、標準の HTML 要素が拡張されます。 タグ ヘルパーによって HTML 要素に提供される追加のサーバー側属性によって、要素がいっそう堅牢になります。
このプロジェクトには、Partial、Label、Input、Validation Summary Message の 4 つのタグ ヘルパーが必要です。
部分タグ ヘルパー
<partial name="_ValidationScriptsPartial" />
これにより、_ValidationScriptsPartial.cshtml
ファイルの内容がページに挿入されます。 この _ValidationScriptsPartial.cshtml
ファイルには、フォーム入力の検証に使用される JavaScript が含まれているため、フォームを含むすべてのページに含める必要があります。
ラベル タグ ヘルパー
<label asp-for="Foo.Id" class="control-label"></label>
これにより、標準の HTML <label>
要素が拡張されます。 多くのタグ ヘルパーと同様に、これは asp-for
属性を使用します。 この属性は、PageModel
のプロパティを受け入れます。 この場合、PageModel
の Foo.Id
プロパティの名前 (具体的には、文字列 "Id"
) は、HTML <label>
要素のコンテンツとしてレンダリングされます。
入力タグ ヘルパー
<input asp-for="Foo.Id" class="form-control" />
前の例と同様に、これにより標準の HTML <input>
要素が拡張されます。 また、asp-for
属性を使用して PageModel
プロパティを指定します。 この場合、Foo.Id
プロパティの値は HTML <input>
要素の value
属性としてレンダリングされます。
検証概要タグ ヘルパー
<div asp-validation-summary="All"></div>
Validation Summary タグ ヘルパーでは、モデル上の 1 つのプロパティの検証メッセージが表示されます。
Note
検証規則やプロパティの表示名などは、PageModel
クラスで定義されます。 次のユニットでは、コード内のそれらの場所を示します。
ページ ハンドラー
PageModel
クラスでは、HTTP 要求と、ページのレンダリングに使用されるデータのための、ページ ハンドラーが定義されます。 前の演習では、PizzaListModel
クラスで、PizzaList
プロパティの値を _service.GetPizzas()
の値に設定して HTTP GET 要求を処理しました。
一般的なハンドラーには、ページの初期化用の OnGet
や、フォームの送信用の OnPost
などがあります。 HTTP POST を処理するために、ページ ハンドラーは、ユーザーが送信したデータを検証したり、無効な場合は入力フォーム ページを再度表示したり、有効なデータを永続化のためにサービスやデータベースに送信したりできます。
次のユニットでは、いくつかのタグ ヘルパーを使用して新しいピザを作成するフォームを追加します。 また、ピザのフォーム送信と削除を処理するためのページハンドラを追加します。