现有项目中缺少 Blazor 功能

Blazor Features missing in existing project

我已经开始使用 VS 2019 中的新 "Blazor Server App" 项目模板,一切都按预期进行。 现在我尝试在现有的 .NET Core 3 ASP.NET MVC 应用程序中使用一些 Blazor 东西。 我添加了“.MapBlazorHub(); & .AddServerSideBlazor();”到启动 class 和

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

到 _layout 文件。 新的 razor 组件按预期呈现,并且触发了 @code 块中的 "OnInitialized()" 方法。但是当我尝试使用按钮单击事件时,什么也没有发生——在 VS 控制台中没有——在浏览器控制台中没有。 经过几个小时的研究,我发现 2 个项目中的语法突出显示是不同的:

Microsoft Blazor 服务器应用程序模板:

现有项目:

我还发现 "Add - Razor Page..." 上下文菜单仅在 MS 模板中可见。 但我在 csproject 或 sln 文件中找不到任何差异。

我真的坚持这一点。知道我遗漏了什么吗?

在 Blazor-Template-Project 中,您应该会看到一个包含多个 @using 指令的 _Imports.razor 文件。

尝试将以下指令添加到您的 MVC 应用程序的 Views\_ViewImports.cshtml 文件中。

@using Microsoft.AspNetCore.Components.Web

没有 using 指令,razor 引擎不知道 @onclick 应该被解释为 C# 代码,因此不会按预期连接事件处理程序。这也是 VisualStudio 不将其突出显示为 C# 语法的原因。

如果这有帮助,您可能还应该将其他与 blazor 相关的 @using 指令添加到 _ViewImports.cshtml 文件中。

不知道遗漏了'Add - Razor Page...',抱歉。

正如 Andreas 所说,您需要在您的文件夹(Views 文件夹或恢复剃须刀组件的自定义文件夹中添加一个新的 _Imports.razor 文件。

_Imports.razor:

@using Microsoft.AspNetCore.Components.Web

结构:

Also I found that the "Add - Razor Page..." context menu is only visibible in the MS template. But I can't find any differences in the csproject or the sln file.

MS 模板使用 Pages 文件夹,您可以看到 Add- Razor Page 选项。

如果您使用的是 Razor Pages 项目,则会有 Add- Razor Page,因为您使用的是 MVC,所以该选项不存在。

如果使用最新的vs 2019和asp.net core 3.0,可以直接点击Add - New Item - Razor Component创建razor组件