首页 > 解决方案 > Blazor WASM Button Onclick 每次都不会触发

问题描述

我有一个包含项目摘要的表格,当我单击一个按钮时,我会弹出一个模式,其中包含有关该项目的附加信息。不幸的是,由于某种原因,Blazor 不会总是弹出模式。它已经到了我已经简化代码只做一个 Console.WriteLine("Person Id: Id") 的地步,我仍然看到这个问题。

@foreach(var p in people){
  <tr>
    <td><button type="button" class="btn btn-outline-info" @onclick="(async()=>await ShowPerson(p))">@p.FirstName</button>
    </td>
    <td>@p.LastName</td>
  </tr>
}

然后在代码部分

List<Person> people { get; set; }
...
async Task ShowPerson(Person p){
  Console.WriteLine("Click");
  selectedPerson = p;
  await _jsRuntime.InvokeVoidAsync("toggleModal", "personModal");
}

然后在我的 js 文件中,toggleModal 只是做了一个$("#" + id).modal('toggle');

现在,当我在观看控制台时,我可以单击一个按钮,并且控制台中可能没有任何显示,并且模式不会打开。或者单击显示在控制台中并弹出模式。有没有人遇到过这个,或者从上面的代码中看到任何明显的东西?

谢谢

标签: c#blazorblazor-webassembly

解决方案


对于遇到这种情况并且像我一样盲目的其他人。验证您@onclick是在实际按钮上,而不是在范围内

坏的:

<button class="btn btn-success">
  <span class="fa fa-bug" @onclick="(async()=>await foo(x))"></span>
</button>

好的:

<button class="btn btn-success" @onclick="(async()=>await foo(x))">
  <span class="fa fa-thumbs-up"></span>
</button>

推荐阅读