2013-06-05 14 views
0

我在Silverlight應用程序上創建導航URI時出現問題。我得到這個URI映射:在CovView.xaml的NavigationContext.QueryString的方法的OnNavigatedToSilverlight中的NavigationContext.QueryString值不正確

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

對於第一個URI將給這個結果。

[0]: {[Id, 1]}

[1]: {[isAnalysed, true]}

但使用第二個URI將給這個結果

[0]: {[Id, 1]}

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

不知道爲什麼它是某種仍然使用第一個URI導航。

更改URI模式/路徑(在映射和導航時)的順序將解決問題,但對於我的情況,這應該是最後一個選項。

有沒有人遇到過這種問題,你做了什麼來解決這個問題(除了改變URI模式/路徑)?

謝謝。

回答

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

希望這可以幫助有類似問題的人。