我有这个工作,它真的让我度过了我的一周。
首先,将您的 MVC 项目更新或转换为 .Net 5.0.402。
它可能适用于早期版本,但我尚未对其进行测试。
向您的 MVC 解决方案添加一个 blazor Web 程序集应用程序项目。
这是 Web 程序集组件项目。
在 MVC 视图中,在您希望呈现 blazor 组件的位置添加:
@using myawesomewasmprojectnamespace.Pages
<component type="typeof(Counter)" render-mode="WebAssemblyPrerendered"/>
<script src="_framework/blazor.webassembly.js"></script>
“@using”声明指的是 blazor Web 程序集应用程序项目 Pages 目录。
“typeof(Counter)”类型是指 Visual Studio 提供的默认 blazor Web 程序集应用程序项目中的 Counter.razor 组件。
这当然可以换成最终的设计组件。
在 MVC 项目的 _Layout.cshtml 中,或 MVC 视图的 <head> 标记所在的任何位置,在其中包含 blazor 组件的每个页面的 <head> 标记中包含:
<base href="/"/>
将“Microsoft.AspNetCore.Components.WebAssembly.Server”包添加到您的 MVC 项目中。
在 MVC 依赖项、项目引用中添加对 blazor Web 程序集应用程序项目的引用。
在 MVC 应用 Startup.cs, 'public void Configure(IApplicationBuilder app, IWebHostEnvironment env)' 方法中,添加以下内容:
app.UseBlazorFrameworkFiles();
在 blazor Web 程序集应用程序项目 Program.cs 文件中,注释掉以下行以停止应用程序寻找“<div id="app"></div>”
//builder.RootComponents.Add<App>("#app");
最后,从 blazor Web 程序集应用程序项目的 wwwroot 目录中删除图标,因为它会与 MVC 冲突。
这会将“计数器”组件添加到您的 MVC 视图中。
要将不同的组件添加到不同的视图,请将其插入:
@using myawesomewasmprojectnamespace.Pages
<component type="typeof(Myawsomecomponentnamecompletelydifferentfromanymvccontrolleroractionname)" render-mode="WebAssemblyPrerendered"/>
<script src="_framework/blazor.webassembly.js"></script>
然后使用以下命令启动您的 blazor 组件:
@page "/myawsomecomponentnamecompletelydifferentfromanymvccontrolleroractionname"
我很高兴能得到这个工作,因为我已经尝试了很多年。
如果你不能让它工作,请给我发消息,我会尽力回答任何问题。