Nguon: Microsoft Learn · .NET 8.0

Form Tag Helper (Tag Helper Form) trong ASP.NET Core

Nguồn: Tag Helpers in forms in ASP.NET Core – The Form Tag Helper

Tác giả: Rick Anderson, N. Taylor Mullen, Dave Paquette, và Jerrie Pelser

Tài liệu này giới thiệu cách làm việc với Forms (biểu mẫu) và các phần tử HTML thường dùng trong form. Phần tử HTML Form cung cấp cơ chế chính để ứng dụng web gửi dữ liệu ngược lại server. Hầu hết tài liệu này mô tả Tag Helpers và cách chúng giúp bạn tạo các HTML form mạnh mẽ một cách năng suất. Bạn nên đọc Introduction to Tag Helpers trước khi đọc tài liệu này.

Trong nhiều trường hợp, HTML Helpers cung cấp cách tiếp cận thay thế cho một Tag Helper cụ thể. Tuy nhiên, cần nhận thức rằng Tag Helpers không thay thế HTML Helpers, và không phải mọi HTML Helper đều có Tag Helper tương ứng. Khi có phương án HTML Helper thay thế, sẽ được đề cập.

Form Tag Helper

Form Tag Helper:

Ví dụ:

cshtml
<form asp-controller="Demo" asp-action="Register" method="post">
    <!-- Input and Submit elements -->
</form>

Form Tag Helper ở trên tạo ra HTML sau:

html
<form method="post" action="/Demo/Register">
    <!-- Input and Submit elements -->
    <input name="__RequestVerificationToken" type="hidden" value="<removed for brevity>">
</form>

MVC runtime tạo giá trị thuộc tính action từ các thuộc tính asp-controllerasp-action của Form Tag Helper. Form Tag Helper cũng tạo một Request Verification Token ẩn để ngăn chặn cross-site request forgery khi sử dụng với thuộc tính [ValidateAntiForgeryToken] trong HTTP Post action method. Bảo vệ một HTML Form thuần túy khỏi cross-site request forgery là khó, nhưng Form Tag Helper cung cấp dịch vụ này cho bạn.

Sử dụng named route

Thuộc tính Tag Helper asp-route cũng có thể tạo markup cho thuộc tính action của HTML. Một ứng dụng có route tên register có thể sử dụng markup sau cho trang đăng ký:

cshtml
<form asp-route="register" method="post">
    <!-- Input and Submit elements -->
</form>

Nhiều view trong thư mục Views/Account (được tạo khi tạo ứng dụng web mới với Individual Accounts) chứa thuộc tính asp-route-returnurl:

cshtml
<form asp-controller="Account" asp-action="Login"
     asp-route-returnurl="@ViewData["ReturnUrl"]"
     method="post" class="form-horizontal" role="form">

Lưu ý: Với các template (mẫu) tích hợp sẵn, returnUrl chỉ được điền tự động khi bạn cố truy cập vào tài nguyên được ủy quyền nhưng chưa được xác thực hoặc ủy quyền. Khi bạn cố truy cập trái phép, security middleware (phần mềm trung gian bảo mật) chuyển hướng bạn đến trang đăng nhập với returnUrl được đặt.