我从事基于Windows Phone 7.5的项目。
我有第1页,它将URL作为QueryString传递。 e.Value.ToString()是 http://xiciimgs.xici.net/d189532038.0/001_7384_%B8%B1%B1%BE_%B8%B1%B1%BE_s.jpg ,这是正确的字符串。
private void myWB1_ScriptNotify(object sender, NotifyEventArgs e)
{
string passingURL = e.Value.ToString();
if (!String.IsNullOrEmpty(passingURL))
{
App.goToPage("/PictureViewPage.xaml?pictureurl=" + passingURL);
}
}
在第2页上,我尝试通过以下代码获取网址
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string strUrl = "";
base.OnNavigatedTo(e);
NavigationContext.QueryString.TryGetValue("pictureurl", out strUrl);
strUrl = Uri.EscapeUriString(strUrl);
}
在TryGetValue之后,strUrl是“ http://xiciimgs.xici.net/d189532038.0/001_7384_¸±±¾_¸±±¾_s.jpg”,在左边的Uri.EscapeUriString之后,strUrl结果是“ http://xiciimgs.xici.net/d189532038.0/001_7384_%C2%B8%C2%B1%C2%B1%C2%BE_%C2%B8%C2%B1%C2%B1%C2%BE_s.jpg ”
一点点,App.gotoPage只做了导航:
public static void goToPage(string targetUri)
{
var rootFrame = (App.Current as App).RootFrame;
rootFrame.Navigate(new System.Uri(targetUri, System.UriKind.Relative));
}
我的问题是为什么会发生这种情况以及如何获得正确的网址?
答案 0 :(得分:2)
最后发现问题,左Uri.EscapeUriString首先通过值来避免导航过程中的格式异常。
private void myWB1_ScriptNotify(object sender, NotifyEventArgs e)
{
string passingURL = e.Value.ToString();
passingURL = Uri.EscapeUriString(passingURL);
if (!String.IsNullOrEmpty(passingURL))
{
App.goToPage("/PictureViewPage.xaml?pictureurl=" + passingURL);
}
}