【问题标题】:Razor Component event not firing in Razor PageRazor 组件事件未在 Razor 页面中触发
【发布时间】:2020-05-16 08:14:46
【问题描述】:

如何在 Razor 页面中运行的 Razor 组件中触发事件?

我的创业:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
            }

            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
                endpoints.MapBlazorHub();
            });
        }

调用组件的我的 Razor 页面:

@page
@model DocketDetail.OrderModel
@{
    Layout = null;
}
@using RelationalObjectLayerCore;

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>

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

    <script src="~/js/site.js"></script>
    <title>Order</title>
</head>
<body>
<component type="typeof(Component.Filedby)" render-mode="ServerPrerendered"  />
</body>

一切正常显示。

我的组件:

@using Microsoft.AspNetCore.Components


@code {

    private void SearchPerson()
    {
        string x = "TEST";
    }    
}


<button @onclick="SearchPerson">Search</button>

显然这是从我的实际代码中缩减的......但我无法弄清楚如何让“SearchPerson”在 Razor 组件中触发。

【问题讨论】:

  • 如果在浏览器中按F12,控制台是否有任何错误?
  • 另外,尝试使用 @(await Html.RenderComponentAsync&lt;Filedby&gt;(RenderMode.ServerPrerendered)) 而不是 &lt;component type="typeof(Component.Filedby)" render-mode="ServerPrerendered" /&gt; 渲染您的组件
  • 我们在 razor 页面中广泛使用 Blazor,它运行良好。我能看到的唯一另一个明显区别是我们使用RenderMode.Server 而不是RenderMode.ServerPrerendered,并且我们在脚本声明中首先使用了&lt;script src="_framework/blazor.server.js"&gt;&lt;/script&gt;

标签: razor-pages blazor blazor-server-side .net-core-3.1


【解决方案1】:

发现这个: https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-3.1#integrate-razor-components-into-razor-pages-and-mvc-apps

附上这个小笔记:

为 blazor.server.js 脚本添加 &lt;script&gt; 标签 关闭&lt;/body&gt;标签:

HTML

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

移动了我的脚本标签,它现在可以工作了。

感谢大家的建议。

【讨论】:

    【解决方案2】:

    我想我明白你在做什么。不确定这是否会按照您的意愿工作。该组件将使用 Blazor 呈现,但附加到按钮的代码将不起作用。将您的按钮的@code{} 放在加载的页面上。或者,如果您希望每次加载页面时都运行该代码,则可以执行 OnInitialized() 重载。

    此外,请确保 Blazor 在浏览器中正确呈现。使用 F12 并确保它显示已连接。

    https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 2021-04-22
      • 2021-09-14
      • 2020-07-29
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多