2

ASP.NET では、次のように QueryString キー/値の存在を確認できます

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

しかし、私はこれを行うことはできませんNavigationContext.QueryString

if(NavigationContext.QueryString["someValue"] != null) 

エラーをスローします -The given key was not present in the dictionary

if(NavigationContext.QueryString.ContainsKey("someValue"))

また、エラーをスローします。このコードは、あるOnNavigatedToべきメソッドにあります。

Windows Phone 8 でキー/値の存在を確認するにはどうすればよいですか? 現時点での私の醜い、醜い回避策は、これらの各ブロックを try / catch で囲み、catch ブロックにコードを入れないことです。キーが存在する場合はコードが完了し、存在しない場合はエラーがスローされ、黙ってキャッチされます。

4

2 に答える 2

1

QueryString にキーが含まれているかどうかを確認することで、適切なコンテキストではない可能性があります。それ以外の場合は、値を取得してみてください。ただし、NavigationContext または QueryString にアクセスすることによってではなく、エラーが抽出プロセスにあるかどうかを確認してください (おそらく null です)。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if(NavigationContext.QueryString.ContainsKey("someValue"))
    {
        // string someValue = NavigationContext.QueryString["someValue"];
    }

    // OR

    string someValue = string.Empty;
    if (NavigationContext.QueryString.TryGetValue("someValue",out someValue))
    {
         // someValue contains the value
    }
}
于 2013-09-29T14:34:15.587 に答える
0

if(NavigationContext.QueryString["someValue"] != null)問題なく動作するはずです。いつ呼びますか?で行う必要がありますOnNavigatedTo。委託者で使用する場合NavigationContextは null です。

于 2013-09-29T12:52:07.973 に答える