知っている人には当たり前かもだけど・・・

asp.net core webappのページハンドラはデフォルトでは、GET要求はOnGet,POST要求はOnPostによって処理されるが、View側から実行するハンドラを変更することが可能。

方法は、TagHelperを使用して、Submit時にasp-page-handler属性を指定する。

例えば、以下のような感じで、Submitボタンによって呼ばれるハンドラを指定することが可能。

<form method="post">
	<button class="btn btn-secondary" asp-page-handler="cancel" type="submit">Cancel</button>  
	<button class="btn btn-primary" asp-page-handler="ok" type="submit">OK</button>
</form>

このような指定をすると、Cancelボタンクリック時には、OnPostCancelが呼び出され、OKボタンクリック時にはOnPostOkが呼び出される。ちなみに、ハンドラはOnの後ろに、asp-page-handlerで指定された名前の最初が大文字であれば、その後ろは大文字でも、小文字でも大丈夫なようだ。(OnPostOKでもOnPostOkでも大丈夫⇒静的言語なのに・・・)

なお、asp-page-handlerを指定した場合、URLに?handler=<ハンドラ名>が付加される。

URLを勝手に変更されたり、動的言語的な判断されるので、個人的には、好きな方法じゃないけど・・・

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。 好きなことだけ拾って投稿しているので、内容にはあまり期待しないでねw
カテゴリー: asp.net core, dotnetcore, 技術系 パーマリンク

知っている人には当たり前かもだけど・・・ への1件のコメント

  1. takezou のコメント:

    この機能を使わずにどのように、インプリするのかというと、古典的な方法を取るのも一つの方法。
    それぞれのボタンにname属性を付けて、value=”1″とかしておいて、OnPostのパラメータにその名前のパラメータをstring型でボタン数分指定する。
    ロジック中で、!string.IsNullOrEmpty(ボタン名)で条件分岐。
    頭固いので、こういうやり方のほうが、単純で分かりやすいw

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください