Windows Phone 7 - передача значений между страницами - PullRequest
6 голосов
/ 25 августа 2011

Я пытаюсь отправить значения между страницами, используя:

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

Здесь значения Company и City передаются на следующую страницу, почему-то названия компаний, такие как "ABC & Ltd", не передаются.правильно, он просто передает «ABC» на следующую страницу.В основном часть после «&» удаляется.

Есть ли здесь возможность отформатировать это ???Или я должен написать логику для этого ??

Нужна помощь!

Спасибо

Ответы [ 3 ]

6 голосов
/ 25 августа 2011

Если какая-либо из ваших строк запроса содержит символы, которые в Uri считаются недействительными, то, как вы обнаружили, произойдет сбой. Вам необходимо использовать 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.

2 голосов
/ 25 августа 2011

Символ & обрабатывается как специальный символ в строках запроса как средство разделения значений.Его необходимо экранировать в %26.

. Для получения дополнительной информации о том, как легко экранировать URL-адреса, используйте Uri.EscapeUriString.

Например:

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 голосов
/ 27 августа 2011

Вы также можете передать параметры в свой код App.xaml.cs, где вы можете определить глобальные значения, к которым вы можете обращаться через ваше приложение,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...