2011-08-25 47 views
6

我試圖用發送的頁面之間的值的頁面之間的值:的Windows Phone 7 - 通過

NavigationService.Navigate(new Uri("/ABC.xaml?name=" + Company + "&city=" + City , UriKind.Relative)); 

在這裏,公司與市值傳遞到下一個頁面,不知何故公司的名稱,如「ABC &有限公司「沒有正確通過,它只是通過」ABC「到下一頁。基本上「&」之後的部分被丟棄。

有沒有一個選項來格式化?或者我應該爲此寫一個邏輯?

需要幫助!

由於

回答

6

如果您的查詢字符串包含被認爲是一個開放的,你在做什麼會失敗,因爲你已經發現無效字符。您需要先使用Uri.EscapeDataString轉義任何非法字符。更改您張貼到下面的代碼:

NavigationService.Navigate(new Uri(String.Format("/ABC.xaml?name={0}&city={1}", 
      Uri.EscapeDataString(Company), Uri.EscapeDataString(City)), 
      UriKind.Relative)); 

逃跑的,當你閱讀使用NavigationContext.QueryString字符串自動轉義,所以沒有必要調用Uri.UnescapeDataString明確。

+0

Uri.EscapeDataString工作!非常感謝 – Sri

+0

爲什麼使用EscapeDataString而不是EscapeUriString? –

+0

@Clément我在某個博客上看過,前者在某些情況下工作,後者不適用於Windows Phone上的導航。不幸的是,我現在找不到鏈接。 – Praetorian

2

&字符將被視爲在查詢字符串特殊字符作爲分隔值的手段。它需要被轉換成%26

有關如何使用Uri.EscapeUriString輕鬆轉義URL的更多信息。

例如:

string Company = "ABC & D"; 
string City = "Falls Church"; 
string escaped = Uri.EscapeUriString("/ABC.xaml?name=" + Company + "&city=" + City); 
var uri = new Uri(escaped, UriKind.Relative); 
+0

感謝您迴應...這是有幫助的! – Sri