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を勝手に変更されたり、動的言語的な判断されるので、個人的には、好きな方法じゃないけど・・・





Users Today : 2
Users Yesterday : 37
Users Last 7 days : 186
Users Last 30 days : 1080
Users This Month : 1009
Users This Year : 4357
Total Users : 98872
Views Today : 3
Views Yesterday : 46
Views Last 7 days : 239
Views Last 30 days : 1280
Views This Month : 1203
Views This Year : 5260
Total views : 137706
Who's Online : 0
この機能を使わずにどのように、インプリするのかというと、古典的な方法を取るのも一つの方法。
それぞれのボタンにname属性を付けて、value=”1″とかしておいて、OnPostのパラメータにその名前のパラメータをstring型でボタン数分指定する。
ロジック中で、!string.IsNullOrEmpty(ボタン名)で条件分岐。
頭固いので、こういうやり方のほうが、単純で分かりやすいw