ASP.NET Razor Pagesのページハンドラーメソッド完全ガイド!OnGet・OnPostを初心者向けに解説
生徒
「ASP.NET Razor Pagesって、画面を表示したり、ボタンを押したりしたときの処理はどこに書くんですか?」
先生
「Razor Pagesでは、ページハンドラーメソッドという仕組みを使って処理を書きます。」
生徒
「ページハンドラーメソッドって難しそうな名前ですね……」
先生
「名前は難しそうですが、やっていることは『画面を開いたとき』『ボタンを押したとき』の処理を分けて書くだけですよ。」
生徒
「それなら少し安心しました!詳しく教えてください。」
1. ページハンドラーメソッドとは?
ASP.NET Razor Pagesのページハンドラーメソッドとは、Webページで起こる操作に応じて実行される処理のことです。たとえば「ページを開いたとき」「フォームを送信したとき」など、人の操作に反応して動きます。
現実の例でたとえると、インターホンを押したら音が鳴る、ドアを開けたら部屋が見える、というように行動に対して決まった反応を返す仕組みです。Razor Pagesでは、この反応を書く場所がページハンドラーメソッドになります。
2. OnGetメソッドの役割
OnGetメソッドは、ページが表示されるときに自動で呼び出される処理です。ブラウザでURLを開いた瞬間に実行されます。
これは「お店のドアを開けた瞬間に、店内が見える」ようなイメージです。特別な操作をしなくても、ページを表示するだけで実行されます。
public class IndexModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = "ページを開きました";
}
}
この例では、ページが表示されたときに、Messageという変数に文字を入れています。
3. RazorファイルでOnGetの結果を表示する
ページハンドラーメソッドで設定した値は、Razorファイル(.cshtml)で表示できます。これにより、画面と処理がつながります。
@page
@model IndexModel
<p>@Model.Message</p>
ここでは、Modelを通してC#の値を画面に表示しています。難しく感じるかもしれませんが、「裏側で用意した紙を、画面に見せている」くらいの感覚で大丈夫です。
4. OnPostメソッドの役割
OnPostメソッドは、ボタンを押したり、フォームを送信したときに実行される処理です。ユーザーのアクションに反応する点が特徴です。
これは「注文ボタンを押したら、厨房に注文が伝わる」ようなものです。何か操作をしたときだけ動きます。
public class IndexModel : PageModel
{
public string Result { get; set; }
public void OnPost()
{
Result = "ボタンが押されました";
}
}
5. フォームとOnPostの基本的な関係
Razor Pagesでは、HTMLのフォームとOnPostメソッドが自然につながります。フォームの送信方法がPOSTの場合、自動的にOnPostが呼ばれます。
@page
@model IndexModel
<form method="post">
<button type="submit">送信</button>
</form>
<p>@Model.Result</p>
ここでは、ボタンを押すだけでOnPostが実行され、結果が画面に表示されます。特別な設定を書かなくても動くのがRazor Pagesの特徴です。
6. OnGetとOnPostの使い分け
OnGetは「表示のため」、OnPostは「操作の結果を受け取るため」に使います。役割を分けることで、プログラムが読みやすくなります。
たとえるなら、OnGetは黒板に最初から書いてある内容、OnPostは生徒が質問したあとに先生が答えを書く部分です。
7. ページハンドラー名のルール
ページハンドラーメソッドは、OnGetやOnPostという決まった名前を使います。このルールがあることで、ASP.NETが自動的に処理を判断します。
名前を間違えると呼ばれないため、「決まりごとを守ること」がとても大切です。
8. 初心者がつまずきやすいポイント
よくある失敗として、フォームのmethodがPOSTになっていない、OnPostを書いたのに動かない、というケースがあります。
まずは「ページを開いたらOnGet」「ボタンを押したらOnPost」と覚えるだけで十分です。細かい仕組みは、慣れてから理解しても問題ありません。