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(可能它们为空)。

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则为空。

于 2013-09-29T12:52:07.973 回答