我正在尝试将特殊字符作为字符串输入,例如用户在文本框中输入的&
或#
。
然后将此字符串传递给下一页
NavigationService.Navigate(new Uri(String.Format("/Pages/EditNote.xaml?note={0}", strText), UriKind.Relative));
然后EditNote.xaml
页面检查note参数并获取其值
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("note"))
{
noteText = NavigationContext.QueryString["note"];
}
}
问题是noteText在为&
,#
等非字母数字字符时始终为空。
我错过了什么?
答案 0 :(得分:1)
由于特殊字符在url构造中具有预定义含义,因此会使用特殊字符的url +数据混淆。
如果在您的上下文中确定,也可以使用IsolatedStorageSettings。
来源页面:
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (!settings.Contains("note"))
{
settings.Add("note", "$#$#$#%#%#????===&&&&&some note Text!#@#@@@ someText @$$@%@%@%@^@@&^*@&(*(**)*)_((_(_(_*(&*(^*&%&%*)");
}
settings.Save();
NavigationService.Navigate(new Uri(@"/Pages/EditNote.xaml", UriKind.Relative));
目标网页:
string note = string.Empty;
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (settings.Contains("note"))
{
note = settings["note"] as string;
}
在这里你可以传递所有特殊字符。
答案 1 :(得分:0)
尝试使用UrlEncoding来获取编码的特殊字符。