【ASP .NET Core Razorページ】任意のメソッドにsubmitする方法

今までMVCを愛用してきましたが、Razorページ開発に手を出してみました。

MVCだとControllerにメソッドを定義して、フォームでController名とアクション名を指定すればsubmitすることができました。
でもRazorページはControllerがないので、定義したメソッドにsubmitするにはどうしたらいいのか、小一時間格闘していました。

ページモデル側

public ActionResult OnPostDownload()
{
    return null;
}

とりあえずsubmitで飛ばすことを確認したいので戻り値とかは適当です。

POSTする場合は「OnPost」をメソッド名の先頭につけるようです。

ビュー側

<form method="POST">
    <input asp-page-handler="Download" asp-page="Index" type="submit" />
</form>

POSTメソッドのフォームを作って、「asp-page-handler」でOnPostを除いたメソッド名を指定すればいけました。

ちなみにまだ試していないですが、Ajaxの場合はクロスサイトリクエストフォージェリ対策の関係で、Tokenを送信する必要があるようです。

MVCに慣れた人間にとってはガラッと仕組みが変わるので戸惑ってばかりですが、Razorも慣れれば使いやすくなりそうな予感はします。
早く息をするようにRazorページ開発ができるようになりたいものです。

コメントする

メールアドレスが公開されることはありません。