gpt4 book ai didi

c# - Blazor onclick 事件未触发

转载 作者:行者123 更新时间:2023-12-02 16:34:10 39 4
gpt4 key购买 nike

我尝试实现一个简单的 onclick 事件处理程序,如此示例 https://blazorfiddle.com/s/counter但在我的解决方案中不起作用。该事件仅在网页运行时触发,原因未知。

带有 Blazor 组件的 HTML 页面显示良好,但当我单击按钮时,没有任何反应。

我使用的是 VS 2019 .Net Core 3.0。 ASP.NET MVC 项目

Counter.razor 文件:

@using Microsoft.AspNetCore.Components

<p>Current count: @currentCount</p>

<button class="btn btn-primary" onclick="@IncrementCount();">Click me</button>

@code {
int currentCount = 0;

private async Task IncrementCount()
{
await Task.Run(() => currentCount++);
}
}

索引.cshtml:

@using WebApplication2.Views.Components

@{
ViewData["Title"] = "Home Page";
}

<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

@(await Html.RenderComponentAsync<Counter>(RenderMode.Server, new { }))

启动.cs:

public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();

services.AddHttpClient();
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

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

浏览器中的按钮:

<button class="btn btn-primary" onclick="System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,WebApplication2.Views.Components.Counter+<IncrementCount>d__2];">Click me</button>

浏览器错误:

Bug in brower

最佳答案

这是与该问题相关的最常见问题:Blazor onclick events don't get triggered 。添加到解决 OP 问题但无法解决我的问题的答案中,我想补充一点:

<强> <script src="~/_framework/blazor.server.js"></script>需要放置在声明事件的组件之后,而不是放在 <head /> 中标签。可能在 body 的最底部标签 _Host.cshtml或您的 MVC View 需要 Blazor成分。如果你不这样做,Blazor语法仍然有效,项目将编译,大多数事情将按预期运行,但事件不会被触发。

我只是花了几个小时试图弄清楚这一点。

另外如果@onclick不被识别为Blazor代码 .razor文件(尤其是在 Component Libraries 中可能会发生这种情况),请确保添加 _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

如果由于某种原因无法找到某些命名空间,可以将它们添加为 nuget包。

关于c# - Blazor onclick 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196812/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com