我有一个Xamarin.Forms应用程序,有两个页面,一个有WebView,另一个只有文本。
会话存储在页面之间导航时丢失数据。
//APage.xaml
<WebView x:Name="webView" WidthRequest="1000" HeightRequest="1000" Navigated="webView_Navigated">
<WebView.Source>
<UrlWebViewSource />
</WebView.Source>
</WebView>
//BPage.xaml
<Span Text="Hi B Page"/>
//APage.xaml.cs
...
public BPage()
{
InitializeComponent();
(webView.Source as UrlWebViewSource).Url = "mytestsite.com";
}
private async void webView_Navigated(object sender, WebNavigatedEventArgs e)
{
var webView = sender as WebView;
var token = await webView.EvaluateJavaScriptAsync("window.sessionStorage.getItem('token')");
System.Console.WriteLine(token); //Every time I Go to BPage and back, it is null.
}
我的网站返回一个";在会话存储中找不到令牌";错误
//每次我转到B页并返回时,它都是空的。
当您navigate from B to A
时,页面B将被释放,每次navigate from A to B
时,您都会导航到新的页面B(不是每次都是相同的页面B(。
你使用的每个webView都在不同的页面B下,这就是你得到null的原因。
这是关于导航的文档。
您可以使用Xamarin.Essentials:在应用程序中保存令牌的首选项。
保存:
Preferences.Set("my_key", "my_value");
读取:
var myValue = Preferences.Get("my_key", "default_value");