如何检查NavigationContext.QueryString?

时间:2013-09-29 12:28:02

标签: c# windows-phone-8 query-string

在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块中没有代码。如果密钥存在则代码完成,否则会抛出静默捕获的错误。

2 个答案:

答案 0 :(得分:1)

通过检查QueryString是否包含密钥应该可以工作,也许你不在适当的上下文中。否则试着获得价值。但是检查错误是否在提取过程中,而不是通过访问NavigationContext或QueryString(可能它们为空)。

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

答案 1 :(得分:0)

if(NavigationContext.QueryString["someValue"] != null)应该可以正常工作。你什么时候打电话的?你应该在OnNavigatedTo中做到这一点。如果你在控制器中使用它,NavigationContext为空。