首页 > 解决方案 > Blazor on click 方法不适用于 .netcore 3.1 应用程序

问题描述

我使用 .Net Core 3.1 处理 MVC 项目。我包括了 Blazor 页面。

_Imports.razor被创建到项目文件夹中。Endpoints 拥有.MapBlazorHub,服务包含ServerSideBlazor(). 我在布局页面中添加了“ _framework/blazor.server.js”和“ ”。<base href="/">

我认为缺少一些细节,但我不知道。

_Imports.razor

@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.JSInterop
@using Monitoring
@using Monitoring.Components

布局头标签

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

配置

app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapBlazorHub();
            });

配置服务

services.AddServerSideBlazor();
services.AddControllersWithViews().AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null).AddRazorRuntimeCompilation(); ;
services.AddRazorPages().AddRazorRuntimeCompilation();

我像这样触发点击事件。我尝试用断点调试,这个方法永远不会被调用。

<button type="button" class="btn btn-sm btn-success align-right" @onclick="AddMoreActionClick">Add More Action</button>

private Models.Alerts alerts = new Models.Alerts() { Server = new Models.Servers(), Actions = new List<Models.Actions>() { new Models.Actions() } };

    public void AddMoreActionClick()
    {
        alerts.Actions.Add(new Models.Actions());
    }

问题解决了!!

我把<script src="_framework/blazor.server.js"></script>这个块从头部标签带到身体底部,然后完美地工作。我不明白它是如何工作的。无论如何问题都解决了。

<body>
    <div>
         blabla
    </div>
    **<script src="_framework/blazor.server.js"></script>**
</body

标签: model-view-controllerrazor.net-coreblazor

解决方案


推荐阅读