开发者

Windows Phone 7 - passing values between pages

I am trying to send the values between the pages using :

NavigationService.Navigate(new Uri("/ABC.xaml?name=" +开发者_运维问答 Company + "&city=" + City , UriKind.Relative));

Here the Company and City values are passed to the next page, somehow the Company names like "ABC & Ltd" is not passing properly,it just passes the "ABC" to next page. Basically the portion after "&" is dropped.

Is there an option here to format this ??? Or should i write a logic for this ??

Help needed !

Thanks


If any of your query strings contain characters that are considered invalid in a Uri what you're doing will fail, as you've discovered. You need to use Uri.EscapeDataString to escape any illegal characters first. Change the code you've posted to the following:

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

The escaped strings are automatically unescaped when you read them using NavigationContext.QueryString, so there's no need to call Uri.UnescapeDataString explicitly.


The & character is treated as a special character in query strings as a means of separating values. It needs to be escaped into %26.

For more information on how to escape URLs easily using Uri.EscapeUriString.

For example:

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);


You Could also pass parameters to you App.xaml.cs code where you can define global values that you can access throughout your app,

http://www.developer.nokia.com/Blogs/Community/2011/08/25/passing-data-between-pages-in-windows-phone-7/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜