if(Page.Request.QueryString["ParamName"] != null)
if(Page.Request.QueryString["ParamName"] == expectedResult)
//Do something spectacular
上記は厄介なようです。クエリ文字列パラメーターが null でないかどうかを確認し、そうであれば値を取得する、よりエレガントでコンパクトな方法はありますか?
if(Page.Request.QueryString["ParamName"] != null)
if(Page.Request.QueryString["ParamName"] == expectedResult)
//Do something spectacular
上記は厄介なようです。クエリ文字列パラメーターが null でないかどうかを確認し、そうであれば値を取得する、よりエレガントでコンパクトな方法はありますか?
提供することを第一に考えた
if ((Page.Request.QueryString["ParamName"] ?? "") == expectedResult) {
しかし、文字列では、一部の文字列をnullと比較しても問題なく、falseが生成されることにすぐに気付きました。実際にこれを使用するだけで機能します。
if(Page.Request.QueryString["ParamName"] == expectedResult)
//Do something spectacular
使用できますString.IsNullOrEmpty
String.IsNullOrEmpty(Page.Request.QueryString["ParamName"]);
または
var parm = Page.Request.QueryString["ParamName"] ?? "";
if(parm == expectedResult)
{
}
個人的には、次のような単純な拡張メソッドのセットを使用します。
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");