Silverlight中的NavigationContext.QueryString值不正确

时间:2013-06-05 03:54:52

标签: silverlight silverlight-4.0

我在Silverlight应用程序上创建导航URI时遇到了问题。我有这个URI映射器:

<uriMapper:UriMapping Uri="/Dev/{id}/Cov/{isAnalysed}" MappedUri="/Views/Cov/CovListView.xaml?Id={id}&amp;isAnalysed={isAnalysed}" />
<uriMapper:UriMapping Uri="/Dev/{id}/Cov/{cId}/{cType}" MappedUri="/Views/Cov/CovListView.xaml?Id={id}&amp;cId={cId}&amp;cType={cType}" />

对于CovView.xaml的OnNavigatedTo方法的第一个Uri, NavigationContext.QueryString 会给出这个结果。

[0]: {[Id, 1]}

[1]: {[isAnalysed, true]}

但使用第二个URI进行导航会得到此结果

[0]: {[Id, 1]}

[1]: {[isAnalysed, 3/DAX]}

不确定为什么它仍然使用第一个Uri。

更改URI模式/路径的顺序(在映射和导航时)将解决问题,但对于我的情况,这应该是最后一个选项。

有没有人遇到过这种问题,你做了什么来解决这个问题(除了改变URI模式/路径)?

感谢。

1 个答案:

答案 0 :(得分:0)

经过一些实验,我找到了解决问题的两个解决方案。

  1. 更改URI映射器以及调用者的模式。其中,对于我的情况不是一个好的解决方案,因为有很多代码已经使用这些URI模式导航到此页面。改变它会改变许多代码。

  2. 第二个解决方案是,我发现交换URI序列可以解决问题。而不是上面的序列,我首先放置第二个URI映射。

  3. 将映射序列更改为此。

    <uriMapper:UriMapping Uri="/Dev/{id}/Cov/{cId}/{cType}" MappedUri="/Views/Cov/CovListView.xaml?Id={id}&amp;cId={cId}&amp;cType={cType}" />
    <uriMapper:UriMapping Uri="/Dev/{id}/Cov/{isAnalysed}" MappedUri="/Views/Cov/CovListView.xaml?Id={id}&amp;isAnalysed={isAnalysed}" />
    

    我实现了第二个解决方案,因为它不需要我更改URI的模式。

    希望这可以帮助有类似问题的人。