как правильно отображать компонент blazor?

#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

  1. Если я объявляю скрипт в main _Layout.cshtml, где находятся все остальные скрипты, или в конце тега body, компонент мертв: события и функции не работают, нет способа динамически изменять компонент; Я вижу на консоли, что соединение устанавливается, как толькозапускается веб-приложение. Поэтому, когда я перехожу на страницу, где у меня есть мой компонент, уже слишком поздно.
  2. Если я объявляю скрипт сразу после моего компонента, вместо этого все работает. Компонент отлично отображается, события и функции работают нормально.

Итак, сейчас я использую 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 — это главная страница, на которую все загружается.