Tôi có xu hướng thích tóm tắt chúng dưới dạng thuộc tính. Ví dụ:
public int age {
get
{
if (Request.QueryString["Age"] == null)
return 0;
else
return int.Parse(Request.QueryString["Age"]);
}
}
Bạn có thể thêm xác thực khác nếu muốn. Nhưng tôi có xu hướng thích gói tất cả các biến chuỗi truy vấn theo cách này.
EDIT: --- Cũng như một áp phích khác đã chỉ ra rằng bạn phải tạo các thuộc tính này trên mọi trang. Câu trả lời của tôi là không bạn không. Bạn có thể tạo các thuộc tính này trong một lớp duy nhất mà bạn có thể gọi là "Chuỗi truy vấn" hoặc một thứ gì đó. Sau đó, bạn có thể nhanh chóng lớp này trong mỗi trang mà bạn muốn truy cập các chuỗi truy vấn của bạn, sau đó bạn chỉ có thể làm điều gì đó như
var queryStrings = new QueryStrings();
var age = queryStrings.age;
Bằng cách này bạn có thể gói gọn tất cả các logic cho việc truy cập và xử lý từng loại biến truy vấn ở một vị trí duy nhất.
EDIT2: --- Và bởi vì nó là một thể hiện của lớp, bạn cũng có thể sử dụng tiêm phụ thuộc để tiêm lớp QueryStrings ở mọi nơi bạn đang sử dụng nó. StructureMap thực hiện tốt công việc đó. Điều này cũng cho phép bạn giả lập lớp QueryStrings và tiêm rằng nếu bạn muốn thực hiện kiểm thử đơn vị tự động. Nó là dễ dàng hơn nhiều để mô phỏng này lên hơn đối tượng yêu cầu của ASP.Net.
Đã thêm tiền thưởng ở đây là nó cho các nhà phát triển tương lai biết chính xác những gì mong đợi từ chuỗi truy vấn khi họ lần đầu tiên ngồi xuống với mã của bạn. –
Có cảm ơn bạn đã nhận thấy điều đó. Đó chắc chắn là ý định. – 7wp
+1 - một cách tuyệt vời để xử lý nó – nailitdown