簡體   English   中英

如何在Silverlight中修改查詢字符串而不刷新頁面?

[英]How can I modify the querystring in Silverlight without refreshing the page?

基於此,我還看到了其他幾個問題,但是在處理Silverlight時沒有明確的答案。

我正在使用Silverlight 5和導航框架在應用程序的不同部分之間導航。 我想做的是在用戶執行我想更新網址的操作時,提供與應用程序的深層鏈接。

我知道可以通過調用NavigationService.Navigate來做到這一點,但是當我真正需要做的就是允許用戶直接刷新到該視圖或保存地址欄中的直接鏈接時,這樣做將重新初始化整個頁面和我的viewmodel。

我知道我應該能夠使用javascript來做到這一點,但我寧願不要在任何人都知道的Silverlight中使用這種方法。

進一步澄清

我的頁面之一是一份報告。 該報告已經具有分頁功能。 我希望能夠在不實際重新加載頁面的情況下將URL更新為#MyReport?Page=2 (就像我說分頁已被處理一樣)。 我只需要處理OnNavigatingTo函數中的querystring,而不必每次他們單擊某些內容時都完全重新加載頁面。 這將允許用戶復制該Url並將其放入電子郵件中,或者將其放置在電子郵件中的任何位置,其他用戶將直接轉到該URL。

我沒有在任何地方看到此文檔,但是當您手動將哈希添加到url時,它在地址欄中顯示為美元符號。

因此,如果我加載到頁面: /MyReport ,導航框架會將它作為#/MyReport通過UriMapper放入網址欄,並單擊它們以轉到報表中的下一組數據(或過濾器,或其他)我決定以這種方式進行導航)我可以告訴導航服務轉到/MyReport#page=2&otherkey=othervalue ,導航框架將在后台將其更改為#/MyReport$page=2&otherkey=othervalue而這不會重新加載頁面。

然后,我可以在OnNavigatedTo添加我的自定義功能,以添加額外的初始化。 當我對代碼中的該值做出反應時,它將美元符號更改回NavigationService.CurrentSource的哈希值。

我相信這是因為silverlight對瀏覽器中的“ hashchanged”事件做出了反應,並進行了適當的導航。 似乎將美元符號作為允許開發人員添加哈希而不破壞導航的一種方式。

更新資料

即使這修改了網址,也無法基於前進/后退導航對其進行更新。 由於導航框架將我的#重寫為$,因此就所有意圖而言,我們都沒有進行任何導航,因此我們仍在同一頁面上。 向前/向后點擊瀏覽器將轉到最后一個URL,但不會觸發任何更改,因此我必須手動執行此操作。 這可以在頁面中NavigationService對象上的FragmentNavigation事件中完成。 如果處理得當,這將允許在同一Silverlight頁面中進行向前/向后導航。

此解決方案允許進行深度鏈接和其他向前/向后導航,而無需不斷重新初始化頁面和視圖模型。

最簡潔的答案是不。

客戶的請求就是請求; 盡管您可以決定通過重定向還是僅發出任何內容來交付所需的任何內容,但是如果沒有重定向就無法更改請求。

如果用戶請求mysite / contenta,而您確實希望他們看到mysite / contentb,則唯一的問題是您是否重定向了,以便他們看到反映在其地址欄中的新網址,還是只是傳遞mysite / contentb和不在乎用戶在地址欄中看到的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM