2011-08-25 101 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