onclick в Core 3.1 Blazor приложение не работает - PullRequest
1 голос
/ 07 февраля 2020

Я только что установил Visual Studio 2019 (v16.4.3, немедленно обновлен до 16.4.4). В моей системе установлен VS2017, но предыдущих версий VS2019 нет.

Я создал новый проект приложения Blazor. Он автоматически создал Index, Counter и другие страницы. Он был создан как приложение. NET Core 3.1 (поскольку 3.1 теперь автоматически устанавливается с VS2019 v16.4 и более поздними версиями).

Я буквально следую за этой страницей «Начало работы»:

https://docs.microsoft.com/en-us/aspnet/core/blazor/get-started?view=aspnetcore-3.1&tabs=visual-studio

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

Я провел несколько поисков и нашел сообщения о похожих проблемах, но решения, похоже, не применяются.

Есть идеи, что не так? (Это НАСТОЛЬКО раздражает, когда недавно сгенерированный, неизмененный проект не работает!)

Код для страницы Counter был сгенерирован как:

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

_Host.cs html:

@page "/"
@namespace ToDoList.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
    Layout = null;
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>ToDoList</title>
    <base href="~/" />
    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
    <link href="css/site.css" rel="stylesheet" />
</head>
<body>
    <app>
        <component type="typeof(App)" render-mode="ServerPrerendered" />
    </app>

    <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>
</html>

Обновление:

По комментариям:

  • Я перезагрузил свой компьютер
  • Зашел прямо в VS2019 и создал новый проект. Выбранное приложение Blazor. Принимаются все значения по умолчанию. Итак, в итоге появился проект под названием BlazorApp1.
  • Нажмите F5, чтобы запустить его. Те же результаты. При нажатии на кнопку «Нажми меня» Счетчик ничего не делает.

Все содержимое BlazorApp1.csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>

Обратите внимание, что ссылка «Начать работу», за которой я следую, специально говорит использовать. NET Core 3.1 (против 2.1). Он говорит, что НЕОБХОДИМО обновить обновление до версии 3.2, но это необходимо, только если я хочу выполнить Blazor WebAssembly (чего я не делаю). Я предпочитаю только выпускать код в моей системе, поэтому я не хочу обновлять до 3.2 Preview для чего-то, что должно работать с 3.1.

1 Ответ

1 голос
/ 08 февраля 2020

VS2019 по умолчанию запускает приложение в Inte rnet Explorer.

Я изменил его для запуска в Edge. Он работает в Edge.

Окончательное обновление:

Я получил его для работы в IE11. Для этого:

Я скачал пакет Daddoon Blazor Polyfill отсюда:

https://github.com/Daddoon/Blazor.Polyfill

Из загруженного zip я скопировал Publish \ Blazor.Polyfill.Publish \ blazor.polyfill.min. js в созданную мной подпапку с именем "js" в подпапке wwwroot в папке моего проекта. Т.е. в ToDoList \ wwwroot я создал подпапку с именем 'js', а затем скопировал файл blazor.polyfill.min. js в эту подпапку.

Затем я отредактировал файл _Host. CS html. Я добавил первую строку здесь (перед второй строкой, которая уже была там, сгенерирована VS и шаблоном Blazor Server):

<script src="js/blazor.polyfill.min.js"></script>
<script src="_framework/blazor.server.js"></script>

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

...