基本使用方式
定義 Razor Page: 在 .cshtml 檔案中定義頁面。
csharp
@page
@model MyApp.Pages.IndexModel
@{
ViewData["Title"] = "Home page";
}
<form method="post">
<input type="text" name="InputData" />
<button type="submit">Submit</button>
</form>
定義 PageModel 類別: 在 .cshtml.cs 檔案中定義 PageModel 類別及其 OnPost 方法。
csharp
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyApp.Pages
{
public class IndexModel : PageModel
{
[BindProperty]
public string InputData { get; set; }
public IActionResult OnPost()
{
// 使用 InputData 做一些事情
if (!string.IsNullOrEmpty(InputData))
{
// 處理輸入資料
}
// 重定向或返回頁面
return Page();
}
}
}
如何獲取參數資料
1. 使用 [BindProperty] 屬性
使用 [BindProperty] 屬性將表單資料直接綁定到 PageModel 類別中的屬性。
csharp
public class IndexModel : PageModel
{
[BindProperty]
public string InputData { get; set; }
public IActionResult OnPost()
{
// InputData 將包含表單提交的值
if (!string.IsNullOrEmpty(InputData))
{
// 處理輸入資料
}
return Page();
}
}
2. 使用 FromForm 特性
可以在 OnPost 方法中使用 [FromForm] 特性來獲取表單參數。
csharp 複製程式碼
public IActionResult OnPost([FromForm] string inputData)
{
// inputData 參數將包含表單提交的值
if (!string.IsNullOrEmpty(inputData))
{
// 處理輸入資料
}
return Page();
}
3. 使用 Request.Form
直接從 Request.Form 獲取表單資料。
csharp
public IActionResult OnPost()
{
var inputData = Request.Form["InputData"];
if (!string.IsNullOrEmpty(inputData))
{
// 處理輸入資料
}
return Page();
}
使用範例
假設我們有一個簡單的表單頁面,使用 Razor Page 和 OnPost 方法處理表單提交:
Index.cshtml
csharp
@page
@model MyApp.Pages.IndexModel
@{
ViewData["Title"] = "Home page";
}
<h2>Submit Data</h2>
<form method="post">
<label for="InputData">Enter some data:</label>
<input type="text" id="InputData" name="InputData" />
<button type="submit">Submit</button>
</form>
@if (Model.Message != null)
{
<p>@Model.Message</p>
}
Index.cshtml.cs
csharp
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyApp.Pages
{
public class IndexModel : PageModel
{
[BindProperty]
public string InputData { get; set; }
public string Message { get; set; }
public void OnGet()
{
// 初始化頁面
}
public IActionResult OnPost()
{
if (!string.IsNullOrEmpty(InputData))
{
Message = $"You submitted: {InputData}";
}
else
{
Message = "Please enter some data.";
}
return Page();
}
}
}
小結
OnPost 方法主要用於處理 POST 請求,例如表單提交。您可以通過多種方式獲取表單資料,包括使用 [BindProperty] 屬性、[FromForm] 特性以及 Request.Form。選擇哪種方式取決於您的具體需求和偏好。