C# Windows Phone 7-在页面之间传递值

C# Windows Phone 7-在页面之间传递值,c#,windows-phone-7,C#,Windows Phone 7,我正在尝试使用以下方式在页面之间发送值: NavigationService.Navigate(new Uri("/ABC.xaml?name=" + Company + "&city=" + City , UriKind.Relative)); 在这里,公司和城市值被传递到下一页,不知何故,像“ABC&Ltd”这样的公司名称传递不正确,它只是将“ABC”传递到下一页。基本上删除了“&”之后的部分 这里有没有设置格式的选项???或者我应该为此写一个逻辑 需要帮助 谢谢,&字符被视为查询

我正在尝试使用以下方式在页面之间发送值:

NavigationService.Navigate(new Uri("/ABC.xaml?name=" + Company + "&city=" + City , UriKind.Relative));
在这里,公司和城市值被传递到下一页,不知何故,像“ABC&Ltd”这样的公司名称传递不正确,它只是将“ABC”传递到下一页。基本上删除了“&”之后的部分

这里有没有设置格式的选项???或者我应该为此写一个逻辑

需要帮助


谢谢

&
字符被视为查询字符串中的特殊字符,作为分隔值的一种方法。它需要转义到
%26

有关如何轻松使用转义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);

如果您的任何查询字符串包含在Uri中被视为无效的字符,那么您正在执行的操作将失败,正如您所发现的那样。首先需要使用转义任何非法字符。将您发布的代码更改为以下内容:

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

当您使用
NavigationContext.QueryString
读取转义字符串时,将自动取消转义字符串的转义,因此无需显式调用
Uri.UnescapeDataString

您还可以将参数传递给App.xaml.cs代码,您可以在其中定义可在整个应用程序中访问的全局值


感谢您的回复。。。这很有帮助!!为什么你要用EscapeDataString而不是EscapeUristing?@Clément我在某个博客上读到,在Windows Phone上导航时,前者在某些情况下起作用,后者则不起作用。很遗憾,我现在找不到链接。如果您发现我的链接有用处,请将答案标记为有用。谢谢,