#.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. Приятно знать, почему это происходит. Спасибо.