【问题标题】:Blazor WASM Button Onclick not firing every timeBlazor WASM 按钮 Onclick 每次都不会触发
【发布时间】:2021-03-24 03:07:11
【问题描述】:

我有一个包含项目摘要的表格,当我单击一个按钮时,我会弹出一个模式,其中包含有关该项目的附加信息。不幸的是,由于某种原因,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# blazor blazor-webassembly


    【解决方案1】:

    对于遇到这种情况并且像我一样盲目的其他人。验证您的 @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>
    

    【讨论】:

      【解决方案2】:

      老实说,我有点惊讶它没有触发。您几乎可以将@onclick 放在任何东西上。

      【讨论】:

      • 当我点击图标时它确实触发了,但由于我有时点击按钮而不是图标它不会触发所以问题似乎是间歇性的
      • 啊,所以它有点像点击跨度中的“周围”元素。这就说得通了。我很确定如果它是一个 div,它可以在任何地方工作。我经常这样做——我会在 div 上添加下划线和蓝色,文本看起来可以点击——然后我将使用 @onclick 展开树的下一层或其他东西。
      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 2022-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多