C# サンプル集 |
Visual Basic 中学校 > C# サンプル集 > C# サンプル集目次 > ASP.NET Core > Razor Pages
ボタンクリックで処理を実行する
2023/12/31
この記事は ASP.NET Core Razor Pages を対象にしています。
この記事内のサンプルは、プロジェクトテンプレート「ASP.NET Core Web アプリ」を使用して、PagesフォルダーにRazorページを追加する前提です。
目次
ボタンをクリックするとメッセージを表示する(HTTP POST版)
ButtonClickOnPost.cshtml.cs
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WorkStandard.Pages.button
{
public class ButtonClickOnPostModel : PageModel
{
public string Message = "";
public void OnPost()
{
Message = $"{DateTime.Now:H時m分s秒} ボタンクリック。";
}
}
}
ButtonClickOnPost.cshtml
@page
@model WorkStandard.Pages.button.ButtonClickOnPostModel
<form method="post">
<div>
@Model.Message
</div>
<div>
<input type="submit" class="btn btn-primary" />
</div>
</form>
主なCSSクラスの効果
- btn btn-primary ボタンをBootstrapの外観にして、主要な機能であることを示します。→ ボタン
ボタンをクリックするとメッセージを表示する(HTTP GET版)
ButtonClickOnGet.cshtml.cs
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WorkStandard.Pages.button
{
public class ButtonClickOnGetModel : PageModel
{
public string Message = "";
public void OnGetButton1()
{
Message = $"{DateTime.Now:H時m分s秒} ボタンクリック。";
}
}
}
ButtonClickOnGet.cshtml
@page "{handler?}"
@model WorkStandard.Pages.button.ButtonClickOnGetModel
<form>
<div>
@Model.Message
</div>
<div>
<input type="submit" asp-page-handler="Button1" class="btn btn-primary" />
</div>
</form>
主なCSSクラスの効果
- btn btn-primary ボタンをBootstrapの外観にして、主要な機能であることを示します。→ ボタン
aタグでもできます。btn btn-primaryを付けることで外見はボタンと同じになります。
ButtonClickOnGet.cshtml
@page
@model WorkStandard.Pages.button.ButtonClickOnGetModel
<div>
@Model.Message
</div>
<div>
<a asp-route-handler="Button1" class="btn btn-primary">Button1</a>
</div>
主なCSSクラスの効果
- btn btn-primary ボタンをBootstrapの外観にして、主要な機能であることを示します。→ ボタン
2つのボタンで異なるメッセージを表示する(HTTP POST版)
TwoButtonClickOnPost.cshtml.cs
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WorkStandard.Pages.button
{
public class TwoButtonClickOnPostModel : PageModel
{
public string Message = "";
public void OnPostButton1()
{
Message = $"{DateTime.Now:H時m分s秒} Button1 クリック。";
}
public void OnPostButton2()
{
Message = $"{DateTime.Now:H時m分s秒} Button2 クリック。";
}
}
}
TwoButtonClickOnPost.cshtml
@page
@model WorkStandard.Pages.button.TwoButtonClickOnPostModel
<form method="post">
<div>
@Model.Message
</div>
<div>
<input type="submit" value="Button1" asp-page-handler="Button1" class="btn btn-primary" />
<input type="submit" value="Button2" asp-page-handler="Button2" class="btn btn-secondary" />
</div>
</form>
主なCSSクラスの効果
2つのボタンで異なるメッセージを表示する(HTTP GET版)
TwoButtonClickOnGet.cshtml.cs
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WorkStandard.Pages.button
{
public class TwoButtonClickOnGetModel : PageModel
{
public string Message = "";
public void OnGetButton1()
{
Message = $"{DateTime.Now:H時m分s秒} Button1 クリック。";
}
public void OnGetButton2()
{
Message = $"{DateTime.Now:H時m分s秒} Button2 クリック。";
}
}
}
TwoButtonClickOnGet.cshtml
@page "{handler?}"
@model WorkStandard.Pages.button.TwoButtonClickOnGetModel
<form>
<div>
@Model.Message
</div>
<div>
<input type="submit" value="Button1" asp-page-handler="Button1" class="btn btn-primary" />
<input type="submit" value="Button2" asp-page-handler="Button2" class="btn btn-secondary" />
</div>
</form>
主なCSSクラスの効果
aタグでもできます。btn btn-primary等を付けることで外見はボタンと同じになります。
TwoButtonClickOnGet.cshtml
@page
@model WorkStandard.Pages.button.TwoButtonClickOnGetModel
<div>
@Model.Message
</div>
<div>
<a asp-route-handler="Button1" class="btn btn-primary">Button1</a>
<a asp-route-handler="Button2" class="btn btn-secondary">Button2</a>
</div>
主なCSSクラスの効果
+-×÷を行う4つのボタン(HTTP POST版)
CalcButtonsOnPost.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.ComponentModel.DataAnnotations;
namespace WorkStandard.Pages.button
{
public class CalcButtonsOnPostModel : PageModel
{
[BindProperty]
public int Value1 { get; set; } = 4;
[BindProperty]
public int Value2 { get; set; } = 3;
public decimal Answer { get; set; }
public void OnPostAdd()
{
Answer = Value1 + Value2;
}
public void OnPostSubtract()
{
Answer = Value1 - Value2;
}
public void OnPostMultiply()
{
Answer = Value1 * Value2;
}
public void OnPostDivide()
{
Answer = (decimal)Value1 / Value2;
}
}
}
CalcButtonsOnPost.cshtml
@page
@model WorkStandard.Pages.button.CalcButtonsOnPostModel
<form method="post">
<div class="mb-3">
<input asp-for="Value1" />
<input asp-for="Value2" />
</div>
<div>
@Model.Answer
</div>
<div>
<input type="submit" value="+" asp-page-handler="Add" class="btn btn-primary" />
<input type="submit" value="ー" asp-page-handler="Subtract" class="btn btn-primary" />
<input type="submit" value="×" asp-page-handler="Multiply" class="btn btn-primary" />
<input type="submit" value="÷" asp-page-handler="Divide" class="btn btn-primary" />
</div>
</form>
主なCSSクラスの効果
+-×÷を行う4つのボタン(HTTP GET版)
CalcButtonsOnGet.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.ComponentModel.DataAnnotations;
namespace WorkStandard.Pages.button
{
public class CalcButtonsOnGetModel : PageModel
{
[BindProperty(SupportsGet = true)]
public int Value1 { get; set; } = 4;
[BindProperty(SupportsGet = true)]
public int Value2 { get; set; } = 3;
public decimal Answer { get; set; }
public void OnGetAdd()
{
Answer = Value1 + Value2;
}
public void OnGetSubtract()
{
Answer = Value1 - Value2;
}
public void OnGetMultiply()
{
Answer = Value1 * Value2;
}
public void OnGetDivide()
{
Answer = (decimal)Value1 / Value2;
}
}
}
CalcButtonsOnGet.cshtml
@page "{handler?}"
@model WorkStandard.Pages.button.CalcButtonsOnGetModel
<form>
<div class="mb-3">
<input asp-for="Value1" />
<input asp-for="Value2" />
</div>
<div>
@Model.Answer
</div>
<div>
<input type="submit" value="+" asp-page-handler="Add" class="btn btn-primary" />
<input type="submit" value="ー" asp-page-handler="Subtract" class="btn btn-primary" />
<input type="submit" value="×" asp-page-handler="Multiply" class="btn btn-primary" />
<input type="submit" value="÷" asp-page-handler="Divide" class="btn btn-primary" />
</div>
</form>
主なCSSクラスの効果