Nhận dữ liệu đầu vào trong controller
Controller thường xuyên làm công việc nhận dữ liệu đầu vào như là chuỗi query, giá trị từ form đưa lên hoặc là những tham số được hệ thống route parse từ incoming url. Chúng ta có 3 cách chính để truy xuất vào các dữ liệu loại này: – Chiết từ tập hợp các đối tượng context – Có dữ liệu truyền ...
Controller thường xuyên làm công việc nhận dữ liệu đầu vào như là chuỗi query, giá trị từ form đưa lên hoặc là những tham số được hệ thống route parse từ incoming url. Chúng ta có 3 cách chính để truy xuất vào các dữ liệu loại này:
– Chiết từ tập hợp các đối tượng context
– Có dữ liệu truyền vào như là tham số của action
– Gọi tính năng model binding một cách tường minh
1. Lấy dữ liệu từ những đối tượng context
Những context object thông dụng
Thuộc tính | Kiểu | Mô tả |
---|---|---|
Request.QueryString | NameValueCollection | Những biến GET gửi cùng request |
Request.Form | NameValueCollection | Những biến POST gửi cùng request |
Request.Cookies | HttpCookieCollection | Những cookie do browser gửi cùng request này |
Request.HttpMethod | string | Phương thức HTTP (như là GET hay POST) được sử dụng cùng request này |
Request.Headers | NameValueCollection | Tập http header gửi cùng request này |
Request.Url | Uri | Url được yêu cầu |
Request.UserHostAddress | string | Địa chỉ IP của người yêu cầu làm request này |
RouteData.Route | RouteBase | Route được chọn cho request này |
RouteData.Values | RouteDataDictionary | Những tham số của route (Được chiết từ URL hoặc từ những giá trị mặc định) |
HttpContext.Application | HttpApplicationStateBase | Nơi lưu trữ trạng thái ứng dụng |
HttpContext.Cache | Cache | Nơi lưu trữ cache ứng dụng |
HttpContext.Items | IDictionary | Nơi lưu trữ trạng thái cho request hiện tại |
HttpContext.Session | HttpSessionStateBase | Lưu trữ trạng thái của phiên làm việc |
User | IPrincipal | Thông tin chứng thực về người đăng nhập hệ thống |
TempData | TempDataDictionary | Dữ liệu tạm thời cho người dùng hiện tại |
Ví dụ
public ActionResult RenameProduct() { // Access various properties from context objects string userName = User.Identity.Name; string serverName = Server.MachineName; string clientIP = Request.UserHostAddress; DateTime dateStamp = HttpContext.Timestamp; AuditRequest(userName, serverName, clientIP, dateStamp, "Renaming product"); // Retrieve posted data from Request.Form string oldProductName = Request.Form["OldName"]; string newProductName = Request.Form["NewName"]; bool result = AttemptProductRename(oldProductName, newProductName); ViewData["RenameResult"] = result; return View("ProductRenamed"); }
2. Sử dụng tham số của action
Chúng ta có thể chiết các dữ liệu đầu vào bằng cách dùng các đối tượng context như đoạn mã sau
public ActionResult ShowWeatherForecast(){ string city = RouteData.Values["city"]; DateTime forDate = DateTime.Parse(Request.Form["forDate"]); }
Tuy nhiên, chúng ta có thể dùng dạng ngắn gọn bằng cách truyền như tham số của action
public ActionResult ShowWeatherForecast(string city, DateTime forDate){ }