【问题标题】:How can I pass query string variables with NavigationService.Navigate?如何使用 NavigationService.Navigate 传递查询字符串变量?
【发布时间】:2011-06-01 03:45:31
【问题描述】:

您好,

搜索了这个,但没有运气。

我正在尝试在我的 Silverlight 4 应用程序中传递查询字符串变量(然后检索它们)。首先我尝试了这个

    this.NavigationService.Navigate(new Uri("/LoanProductionRegion?Elvis=Alive&ImHungry=true", UriKind.Relative));

但是 HtmlPage.Document.QueryString 没有提取它们,因为它们位于锚点之后(完整的 url 看起来像 http://localhost:1076/Dashboard.SLTestPage.aspx#/LoanProductionRegion?Elvis=Alive&ImHungry=true)。

我试着把vars放在前面,比如

    this.NavigationService.Navigate(new Uri("?Elvis=Alive&ImHungry=true/LoanProductionRegion", UriKind.Relative));
    this.NavigationService.Navigate(new Uri("/?Elvis=Alive&ImHungry=true/LoanProductionRegion", UriKind.Relative));

但两者都会导致“找不到页面”错误。有人知道如何实现我的目标吗?

【问题讨论】:

  • @Aaron:以前没有,没有。谢谢。不过,对于应该是一件简单的事情来说,这似乎是一项艰巨的任务。不过,看那个博客给了我一个想法。这很 hacky,但我可以将 Uri 从 OnNavigatedTo 方法中的 NavigationEventArgs 中取出并解析自己。

标签: silverlight silverlight-4.0


【解决方案1】:

您可以在页面中使用 OnNavigatedTo 方法,然后检查 this.NavigationContext.QueryString["Elvis"](或您喜欢的任何其他参数名称)。

NavigationContext(很像 NavigationService)保证在 OnNavigatedTo 被调用时被初始化,所以在大多数情况下,这是检查它的最方便的时间。

NavigationContext.QueryString 只是一个 IDictionary,它预先解析了查询字符串中的键值对。因此,您可以使用 IDictionary 执行任何您期望的操作 - 使用 ContainsKey 查看是否存在某些内容,在 foreach 循环中对其进行迭代等。

【讨论】:

  • 不错!谢谢。无需自己解析。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 2017-11-15
  • 2012-06-25
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多