Как я могу заставить макет страницы перестать мгновенно исчезать при доступе к несуществующей странице в Blazor?

#.net-core #blazor #webassembly

Вопрос:

Я настроил страницу для отображения, когда пользователь вводит URL-адрес, который не соответствует странице в моем проекте Blazor. Содержимое определяется в приложении.razor:

             <NotFound>
            <LayoutView Layout="@typeof(MainLayout)">
                <p>There is nothing at this address.</p>
                <img src="/images/broken_wine_glass.jpg" />
            </LayoutView>
        </NotFound>
 

Проблема в том, что когда пользователь нажимает на ссылку, которая приводит его по неверному адресу, весь макет на мгновение исчезает, прежде чем вернуться вместе с содержимым «ничего по этому адресу». Есть ли способ перенаправить на эту страницу без исчезновения меню в макете?

Комментарии:

1. Когда вы говорите «Пользователь вводит URL-адрес, который не…», вы имеете в виду ввод URL-адреса в строке URL браузера или в какой-либо элемент управления в вашем приложении. Любой URL-адрес, введенный в строке браузера, является труднодоступным http (если вы не закодируете его, чтобы остановить) и «перезагрузит» SPA, что объясняет «исчезновение на мгновение». Сервер Blazor? В Blazor WASM это будет больше, чем «момент».

2. Ответ прост: перейдите на серверную сторону Blazor. То, что вы видели, — это то, как работает сеть. Это естественно или, по крайней мере, неизбежно. Просто отобразите сообщение типа: Научитесь печатать или что-нибудь менее вежливое.

3. Вся планировка исчезает на мгновение, это нормальное явление. Это потому, что рендеринг остается слишком долго в течение этого периода?

4. @MichaelKossin Привет, хорошо задать вопрос, но вам нужно ответить??? Или закройте его, если вы поняли ответ.

5. @ShaunCurtis, это также происходит, если пользователь переходит на несуществующую страницу, нажав на ссылку в приложении.

Ответ №1:

Я полагаю, что причина этого в том, как Блейзор пытается найти подходящий маршрут.

Во-первых, он проверит локальную таблицу маршрутизации на наличие компонента, который обрабатывает маршрут. Если это не удастся, он перенаправится на сервер и посмотрит, есть ли у сервера соответствующий маршрут. Если это не удается, приложение Blazor перезагружается и отображается шаблон «Не найден» на маршрутизаторе.

Мерцание, которое вы описываете, возникает, когда приложение перезагружается во время описанного выше процесса.

Комментарии:

1. Приятно знать, почему это происходит. Спасибо.