Как перенаправить на другую страницу из события Xamarin Webviews Navigating - PullRequest
0 голосов
/ 25 января 2019

Я хочу сделать очень простую вещь: если человек заходит на определенную страницу в моем веб-просмотре, я хочу, чтобы он был перенаправлен на другую страницу.Я хочу сделать это, чтобы страница ошибок не отображалась во время сеанса.Так что это должно происходить изнутри Xamarin, потому что мне нужно повторно отправить учетные данные пользователя.

Чтобы сделать это, я считаю, что мне нужно перехватить событие Navigating, проверьте, соответствует ли веб-страница странице, которую я не хочувидеть.Отмените событие Navigating и установите 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 и без перенаправления.Если я отлаживаюсь, я правильно запускаю код и знаю, что событие всегда хорошо ловится, и проверка на веб-сайт работает.Если я попал на новый URL в браузере, отображается правильная страница.

Теперь, если я уберу эту строку

        e.Cancel = true;

, я получу ближе к желаемому результату.Затем меня перенаправляют на unauthenticated.xhtml, но через секунду меня снова перенаправляют на нужную страницу.Таким образом, предупреждение мигает на экране и исчезает.(Имеет смысл: оба события навигации все еще проходят)

Я также пытался расположить эти две строки в следующем порядке:

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

Но результат не изменился.

Как я могу получить хорошо работающее перенаправление внутри программы?Спасибо за вашу помощь.

...