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 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ínhKiểuMô tả
Request.QueryStringNameValueCollectionNhững biến GET gửi cùng request
Request.FormNameValueCollectionNhững biến POST gửi cùng request
Request.CookiesHttpCookieCollectionNhững cookie do browser gửi cùng request này
Request.HttpMethodstringPhương thức HTTP (như là GET hay POST) được sử dụng cùng request này
Request.HeadersNameValueCollectionTập http header gửi cùng request này
Request.UrlUriUrl được yêu cầu
Request.UserHostAddressstringĐịa chỉ IP của người yêu cầu làm request này
RouteData.RouteRouteBaseRoute được chọn cho request này
RouteData.ValuesRouteDataDictionaryNhững tham số của route (Được chiết từ URL hoặc từ những giá trị mặc định)
HttpContext.ApplicationHttpApplicationStateBaseNơi lưu trữ trạng thái ứng dụng
HttpContext.CacheCacheNơi lưu trữ cache ứng dụng
HttpContext.ItemsIDictionaryNơi lưu trữ trạng thái cho request hiện tại
HttpContext.SessionHttpSessionStateBaseLưu trữ trạng thái của phiên làm việc
UserIPrincipalThông tin chứng thực về người đăng nhập hệ thống
TempDataTempDataDictionaryDữ 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){ 

}

source: gockinhnghiem.com
Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét