Form Tag Helper (Tag Helper Form) trong ASP.NET Core
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
- Tạo giá trị thuộc tính
actioncủa HTML <FORM> cho một action của MVC controller hoặc một named route (route có tên). - Tạo một hidden Request Verification Token (token xác minh yêu cầu) ẩn để ngăn chặn cross-site request forgery (giả mạo yêu cầu giữa các trang, CSRF) khi sử dụng với thuộc tính
[ValidateAntiForgeryToken]trong HTTP Post action method. - Cung cấp thuộc tính
asp-route-<Parameter Name>, trong đó<Parameter Name>được thêm vào route values (giá trị route). Tham sốrouteValuescủaHtml.BeginFormvàHtml.BeginRouteFormcung cấp chức năng tương tự. - Có phương án HTML Helper thay thế là
Html.BeginFormvàHtml.BeginRouteForm.
Ví dụ:
<form asp-controller="Demo" asp-action="Register" method="post">
<!-- Input and Submit elements -->
</form>Form Tag Helper ở trên tạo ra HTML sau:
<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-controller và asp-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ý:
<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:
<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.