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

上面看起來很亂。有沒有更優雅/緊湊的方式來檢查查詢字符串參數是否爲空,如果是 - 檢索它的值?檢查查詢字符串參數值的最優雅方式是否爲空?

+0

http://stackoverflow.com/questions/ 349742/how-do-you-test-your-request-querystring-variables –

回答

10

我想先提供

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

,但很快意識到,用繩子,用空比較一些字符串是好的,並會產生虛假的,所以真的只是使用這將工作:

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

您可以使用String.IsNullOrEmpty

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

或者

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

} 
+0

ParamName的值是什麼?你只解決了我的代碼的第一行(實際上,我應該真的使用IsNullOrEmpty - 所以+1)。 –

1

我個人用一組簡單的擴展方法,像這樣走:

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); 
    } 
} 

和樣例用法

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

最好是編寫完整,快速和容易理解的代碼,以便其他開發人員首先查看可能會繼續執行代碼的內容。另外,如果你看到你寫的代碼是多少代碼產品,你會意識到你編寫的代碼很慢。一個簡單的'=='完成了這項工作。 – Aristos

+0

很高興接受批評,但你能解釋代碼是如何被認爲是「緩慢」? – Kane

+0

因爲我也接受批評,所以我收回慢代碼,檢查它並編譯創建我所看到的內容,而不是一開始就想到的額外轉換。 (我的意思是有很多額外的檢查,只需要'==',但它是我們所看到的) – Aristos

相關問題