如何在Xamarin Webviews导航事件中重定向到另一个页面

时间:2019-01-25 09:18:15

标签: xamarin redirect navigation url-redirection

我想做一件非常简单的事情:如果某人转到了我的Web视图中的特定页面,我希望将他们重定向到另一个页面。我想这样做是为了防止在会话超时时显示错误页面。因此,这需要在Xamarin中进行,因为我必须重新发送用户凭据。

为此,我相信我必须赶上导航事件,检查网页是否与我不想看到的页面相对应。取消导航事件,然后将浏览器URL设置为我要重定向到的页面。

private void Navigating(object sender, WebNavigatingEventArgs e)
{
    String url = e.Url;
    if (url.Contains("unauthenticated.xhtml"))
    {
        url = getURL();
        e.Cancel = true;
        browser.Source = url;
    } else
    {
        e.Cancel = false;
    }
LogService.log("navigating to " + url);
}

这不起作用。我仍然可以看到难看的unauthenticated.xhtml页面,并且没有重定向。如果我进行调试,则可以正确运行代码,因此我知道该事件总是可以很好地捕获,并且可以检查网站。如果我在浏览器中找到了新的网址,则会显示正确的页面。

现在,如果我删除此行

        e.Cancel = true;

我更接近想要的结果。然后,我确实被重定向到unauthenticated.xhtml,但是在一秒钟内,我再次被重定向到正确的页面。因此,警告在屏幕上闪烁并消失。 (可以理解:两个导航事件仍会发生)

我也尝试过按以下顺序放置这两行:

        browser.Source = url;
        e.Cancel = true;

但是结果没有改变。

如何从程序内部获得良好的重定向? 谢谢您的帮助。

0 个答案:

没有答案