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

上面看起来很笨拙。是否有更优雅/紧凑的方法来检查查询字符串参数是否不为空,如果是 - 检索它的值?

4

3 回答 3

10

我首先想到的是提供

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

但很快意识到,对于字符串,将一些字符串与 null 进行比较是可以的,并且会产生错误,所以真的只使用它就可以了:

if(Page.Request.QueryString["ParamName"] == expectedResult)
    //Do something spectacular
于 2012-06-29T10:58:04.083 回答
7

您可以使用String.IsNullOrEmpty

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

或者

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

}
于 2012-06-29T10:52:33.993 回答
2

我个人会使用一组简单的扩展方法,如下所示:

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");
于 2012-06-29T11:00:53.153 回答