我正在尝试通过以下方式在页面之间发送值:
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”到下一页。基本上,“&”后面的部分被删除了。
这里有什么选项可以格式化吗?还是我需要编写逻辑来解决这个问题?
需要帮助!
谢谢
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
。&
字符在查询字符串中被视为特殊字符,用于分隔值。需要将其转义为%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);
你也可以将参数传递给你的 App.xaml.cs 代码,在那里你可以定义全局值,可以在整个应用程序中访问。