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 模式/路径)?

谢谢。

4

1 回答 1

0

经过一些实验,我提出了两种解决方案来解决这个问题。

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

  2. 第二个解决方案是,我发现交换URI的顺序可以解决问题。代替上面的顺序,我把第二个 URI 映射放在第一位。

将映射顺序更改为此。

<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 的模式。

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

于 2013-06-06T02:50:21.267 回答