Rub*_*b3s 9 c# asp.net-mvc blazor blazor-server-side
我正在尝试在 .net core 3 MVC 项目中使用 Blazor。我使用了一些教程来做到这一点,比如https://fizzylogic.nl/2019/08/18/integrating-blazor-in-an-existing-asp-net-core-application/和https://chrissinty.com /using-blazor-components-in-an-existing-mvc-application/。
工作原理:Blazor 组件的初始化工作正常。OnInitializedAsync() 函数被触发,组件渲染得很好。
这是来自 MVC 视图的调用:
@(await Html.RenderComponentAsync<MyProject.Components.Locations>(RenderMode.ServerPrerendered))
Run Code Online (Sandbox Code Playgroud)
什么不起作用:在 Blazor 组件中使用 @onclick。这是一些示例代码:
<span @onclick="AddLocation"></span>
@code {
private void AddLocation(){
}
}
Run Code Online (Sandbox Code Playgroud)
它可能不起作用的原因是我在连接初始化时出错。组件不是从基本路径渲染的,而是从特定视图的 url 渲染的,我认为这会影响连接。我在 Chrome 的控制台中收到这些错误:
主要的错误可能是'将'_blazor '标准化为' https://localhost:44375/Locations/_blazor ' '。从基本路径请求 _blazor 有效。有谁知道在这种情况下如何设置基本路径?
(是的,普通 Razor 页面环境中的 Blazor 可能更容易,但我想在 MVC 中尝试 Blazor。)
<base href="/" />在标题中似乎已经修复了控制台中的错误。我希望它可以解决 onclick 问题,但还没有……我认为该组件在某种程度上被视为普通的剃刀组件,而不是 blazor 组件。如果我查看生成的 html,我可以找到这个:<span @onclick="AddLocation" ></span>,我认为这是错误的(对于普通的 razor/blazor 项目,@onclick 从 html 中消失了)。有谁知道这个问题的解决方案?试过这个:https : //stackoverflow.com/a/58444907/1794246,但这并没有多大作用。
在 MVC 项目的根目录中有一个 _imports.razor 文件显然什么也没做。将这些 using 语句添加到 Blazor 组件实际上解决了 onclick 的问题(Intellisense 也更好地识别了组件中的内容):
@using Microsoft.AspNetCore.Components
@using Microsoft.AspNetCore.Components.Web;
Run Code Online (Sandbox Code Playgroud)
问题的解决方案是改变两件事:
<base href="/" />_Layout.cshtml 的标题中@using Microsoft.AspNetCore.Components
@using Microsoft.AspNetCore.Components.Web;
Run Code Online (Sandbox Code Playgroud)
之后,@onclick 开始工作,并且智能感知在 Blazor 组件中识别出更好的东西。
| 归档时间: |
|
| 查看次数: |
3812 次 |
| 最近记录: |