Làm thế nào để kiểm tra Request.QueryString có giá trị cụ thể hay không trong ASP.NET?


77

Tôi có một error.aspxtrang. Nếu người dùng truy cập trang đó thì nó sẽ tìm nạp đường dẫn lỗi trong page_load()URL phương thức bằng cách sử dụng Request.QueryString["aspxerrorpath"]và nó hoạt động tốt.

Nhưng nếu người dùng truy cập trực tiếp vào trang đó, nó sẽ tạo ra một ngoại lệ vì aspxerrorpathkhông có ở đó.

Làm thế nào tôi có thể kiểm tra xem aspxerrorpathcó ở đó hay không?


tôi cũng đã cố gắng sử dụng Request.QueryString.Count = 0 nhưng sau đó vấn đề là nếu người dùng đính kèm bất kỳ điều như abc = 1223 sau đó một lần nữa nó sẽ cung cấp cho ngoại lệ!?
— Peeyush

Request.QueryString.Count != 0sẽ chỉ cho bạn biết nếu không có tham số nào cả.
— Oded

Câu trả lời:


125

Bạn chỉ có thể kiểm tra null:

if(Request.QueryString["aspxerrorpath"]!=null)
{
   //your code that depends on aspxerrorpath here
}

nhờ nó hoạt động tôi đã cố gắng mà trước đây nhưng thời điểm đó nó không làm việc nhưng bây giờ nó working..may được đã mất tích một cái gì đó mà thời gian :-).
— Peeyush

5
@Peeyush Có thể bạn sẽ thấy mình đang cố truyền nó thành '.ToString ()' và do đó đang cố truyền null thành một giá trị chuỗi trước khi kiểm tra chính giá trị null. Đó là một sai lầm phổ biến.
— Phill Healey

Lưu ý rằng điều này sẽ không thể kiểm tra xem một khóa có trong QueryString hay không khi nó không có giá trị.
— Protector một

2
Trong lõi Mvc, đó là request.Query.ContainsKey ("aspxerrorpath")
— Dhanuka777 Ngày

36

Kiểm tra giá trị của tham số:

// .NET < 4.0
if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]))
{
 // not there!
}

// .NET >= 4.0
if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"]))
{
 // not there!
}

Nếu nó không tồn tại, giá trị sẽ là null, nếu nó tồn tại, nhưng không có bộ giá trị, nó sẽ là một chuỗi trống.

Tôi tin rằng những điều trên sẽ phù hợp với nhu cầu của bạn hơn là chỉ để kiểm tra null, vì một chuỗi rỗng cũng không tốt cho tình huống cụ thể của bạn.


2
Và nếu .NET == 4.0 thì sao? Sử dụng IsNullOrWhiteSpace?
— Chris

1
nếu .NET == 4.0? Sử dụng IsNullOrWhiteSpace
— Mike W

13

Để kiểm tra một QueryString trống, bạn nên sử dụng thuộc Request.QueryString.HasKeystính.

Để kiểm tra xem khóa có tồn tại hay không: Request.QueryString.AllKeys.Contains()

Sau đó, bạn có thể nhận được Giá trị của ist và thực hiện bất kỳ kiểm tra nào khác mà bạn muốn, chẳng hạn như isNullOrEmpty, v.v.


5
Request.QueryString.AllKeys.Contains()thực sự sẽ trả về false khi khóa có mặt nhưng không có giá trị.
— Protector một

10

Bạn cũng có thể thử:

if (!Request.QueryString.AllKeys.Contains("aspxerrorpath"))
   return;

8
string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value

Sẽ trả lại nếu có giá trị


3

Còn cách tiếp cận trực tiếp hơn thì sao?

if (Request.QueryString.AllKeys.Contains("mykey")

2

Để giải quyết vấn đề của bạn, hãy viết dòng sau trên phương thức Page_Load trên trang của bạn.

if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return;

.Net 4.0 cung cấp cái nhìn gần hơn về chuỗi null, rỗng hoặc khoảng trắng, hãy sử dụng nó như được hiển thị trong dòng sau:

if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return;

Thao tác này sẽ không chạy các câu lệnh tiếp theo của bạn (logic kinh doanh của bạn) nếu chuỗi truy vấn không có aspxerrorpath.


2

nghĩ rằng séc bạn đang tìm là:

if(Request.QueryString["query"] != null) 

Nó trả về nullvì trong chuỗi truy vấn đó nó không có giá trị cho khóa đó.


1
Request.QueryString.GetValues ​​(null) .Contains ("truy vấn")
— user5690126
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.