2012-06-29 29 views
9
if(Page.Request.QueryString["ParamName"] != null) 
    if(Page.Request.QueryString["ParamName"] == expectedResult) 
    //Do something spectacular 

Ở trên dường như có sự lộn xộn. Có một cách thanh lịch/nhỏ gọn hơn để kiểm tra nếu một tham số chuỗi truy vấn không phải là null và nếu có - lấy giá trị của nó?Cách thanh lịch nhất để kiểm tra giá trị của tham số chuỗi truy vấn nếu không phải là null?

+0

http://stackoverflow.com/questions/ 349742/how-do-you-test-your-request-querystring-variables của bạn –

Trả lời

10

tôi nghĩ đầu tiên của việc đưa ra

if ((Page.Request.QueryString["ParamName"] ?? "") == expectedResult) { 

nhưng nhanh chóng nhận ra rằng với chuỗi, so sánh một số chuỗi null là tốt, và sẽ sản xuất sai, vì vậy thực sự chỉ sử dụng tính năng này sẽ hoạt động:

if(Page.Request.QueryString["ParamName"] == expectedResult) 
    //Do something spectacular 
7

Bạn có thể sử dụng String.IsNullOrEmpty

String.IsNullOrEmpty(Page.Request.QueryString["ParamName"]); 

Hoặc

var parm = Page.Request.QueryString["ParamName"] ?? ""; 
if(parm == expectedResult) 
{ 

} 
+0

Còn giá trị của ParamName thì sao? Bạn đã chỉ giải quyết được dòng đầu tiên của mã của tôi (dù sao đi nữa, tôi thực sự nên sử dụng IsNullOrEmpty - vì vậy +1). –

1

Cá nhân tôi sẽ đi với một tập hợp đơn giản của phương pháp khuyến nông, một cái gì đó như thế này:

public static class RequestExtensions 
{ 
    public static string QueryStringValue(this HttpRequest request, string parameter) 
    { 
     return !string.IsNullOrEmpty(request.QueryString[parameter]) ? request.QueryString[parameter] : string.Empty; 
    } 

    public static bool QueryStringValueMatchesExpected(this HttpRequest request, string parameter, string expected) 
    { 
     return !string.IsNullOrEmpty(request.QueryString[parameter]) && request.QueryString[parameter].Equals(expected, StringComparison.OrdinalIgnoreCase); 
    } 
} 

và sử dụng mẫu

string value = Page.Request.QueryStringValue("SomeParam"); 
bool match = Page.Request.QueryStringValueMatchesExpected("SomeParam", "somevaue"); 
+0

Tốt hơn là viết mã có thể hoàn toàn, nhanh chóng và dễ dàng hiểu những gì được thực hiện với cái nhìn đầu tiên bởi các nhà phát triển khác có thể đến để tiếp tục mã của bạn. Ngoài ra nếu bạn thấy bao nhiêu mã là sản phẩm của các dòng bạn viết bạn nhận ra rằng bạn làm cho mã chậm. Một đơn giản '==' được thực hiện công việc. – Aristos

+0

Vui lòng chấp nhận những lời chỉ trích nhưng bạn có thể giải thích cách mã được coi là 'chậm' không? – Kane

+0

Bởi vì tôi cũng chấp nhận những lời chỉ trích, tôi lấy lại mã chậm, tôi kiểm tra nó và biên dịch tạo ra những gì tôi thấy, không phải là chuyển đổi bổ sung mà tôi nghĩ lúc đầu. (Tôi chỉ có nghĩa là có rất nhiều kiểm tra thêm, khi chỉ cần '== 'nhưng những gì chúng ta thấy) – Aristos

Các vấn đề liên quan