#javascript #asp.net-core #blazor #blazor-server-side
#javascript #asp.net-ядро #blazor #blazor-на стороне сервера
Вопрос:
Я не понимаю, как правильно отображать компоненты Blazor.
Я установил сервер razor в веб-приложении C # ASP NET Core. Я пытаюсь визуализировать компоненты, используя render-mode=»ServerPrerendered» или render-mode =»Server»
В обоих случаях мне нужно объявить скрипт _framework/blazor.server.js
- Если я объявляю скрипт в main _Layout.cshtml, где находятся все остальные скрипты, или в конце тега body, компонент мертв: события и функции не работают, нет способа динамически изменять компонент; Я вижу на консоли, что соединение устанавливается, как толькозапускается веб-приложение. Поэтому, когда я перехожу на страницу, где у меня есть мой компонент, уже слишком поздно.
- Если я объявляю скрипт сразу после моего компонента, вместо этого все работает. Компонент отлично отображается, события и функции работают нормально.
Итак, сейчас я использую 2. НО таким образом, каждый раз, когда мне нужно использовать компонент на новой странице, я снова и снова объявляю скрипт, поэтому соединение каждый раз разрушается и устанавливается.
Я не думаю, что это чистое решение. Тогда каков правильный способ рендеринга компонентов?
Заранее благодарю вас и приношу извинения за плохой английский
Ответ №1:
Судя по шаблону «BlazorApp», предоставляемому последней версией Visual Studio, вы помещаете его в конец Pages/_Hosts.cshtml
:
<body>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.server.js"></script>
</body>
Комментарии:
1. Хорошо, это базовый пример: как насчет наличия большего количества компонентов внутри разных страниц и / или представлений? Где я должен объявить _framework/blazor.server.js в данном случае?
2. вам нужно будет объявить его только один раз. _Hosts.cshtml — это главная страница, на которую все загружается.