TOC

This article is currently in the process of being translated into Vietnamese (~99% done).

HttpContext:

Forms (POST data)

Trong phần cuối, chúng ta thảo luận về query string và các bạn đọc tham số thông qua nó như thế nào. Việc này thường xảy ra thông qua cái gọi là GET request- là kết quả thường xảy ra của việc user nhập một URL trên trình duyệt hay click vào link. Thứ có thể thay thế cho GET request thì chúng ta có POST request. Một POST request thường xuất hiện khi user submits FORM (e.g. contact form ,login form v.v). không như GET request -data có thể nhìn được trên URL thì POST request ẩn toàn bộ data. Vì vậy các bạn cần sử phục thuộc tính khác trên HttpContext class để lấy POST data: Thuộc tính Form.

Trong ASP.NET MVC, Phương pháp phổ biến nhất để làm việc với forms là rằng buộc form bằng một Model. Có nghĩa là mỗi trường của form ứng với một thuộc tính của Model, cho phép form read & write thông qua Model khi submitted form. Việc này thường được gọi là Model Binding, và chúng ta sẽ thảo luận nó sau, nhưng trong bài này, chúng ta sẽ truy cập vào Form data theo phong cách cũ.

Truy cập dữ liệu FORM

Thuộc tính của Form thực ra hoạt động rất giống Thuộc tính Query - Nó đóng vai trò như một Dictionary với keys và values của chúng. Vậy khi submit POST request tới Controller ví dụ submitting a form thì tất cả các trường trong đó sẽ được thêm vào FORM dictionary với tên của chúng là Key và giá trị là Value. Dưới đây là một minh họa đơn giản :

<form method="post" action="/Home/FormsTestPost">  
<label for="txtName">Your name:</label>  
<input type="text" id="txtName" name="UserName" />  

<label for="txtAge">Your age:</label>  
<input type="number" id="txtAge" name="UserAge" />  

<button type="submit">Submit</button>  
</form>

Một form HTML đơn giản. Chú ý cách tôi set đặc tính của method để POST- forms hỗ trợ tốt hơn cho phương thức GET, nhưng việc sử dụng phương thức POST để làm việc với forms hầu như luôn luôn được đánh giá cao hơn.

Controller sẽ trông như thế này này :

public class HomeController : Controller  
{  
[HttpGet]  
public IActionResult FormsTest()  
{  
return View();  
}  

[HttpPost]  
public IActionResult FormsTestPost()  
{  
return Content("Hello, " + HttpContext.Request.Form["UserName"] + ". You are " + HttpContext.Request.Form["UserAge"] + " years old!");  
}  
}

Chú ý cách tôi truy cập đến các trường value của FORM bằng việc tham chiếu tên của chúng( UserName UserAge, như quy định trong tên thuộc tính của các form fields) trong Form collection

Tóm tắt

Truy cập đến FORM/POST data trở nên dễ dàng hơn bao giờ hết trong ASP.NET MVC với sự hỗ trợ tuyệt vời của HttpContext class và Form property.Tuy nhiên việc sử dụng chúng thường không còn cần thiết nữa với Model Binding nhưng chúng vẫn hữu dụng trong một vài trường hợp nhất định .


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!