gpt4 book ai didi

c# - 如何在 Blazor 中将带有参数的 onclick 添加到按钮?

转载 作者:行者123 更新时间:2023-12-04 00:54:28 26 4
gpt4 key购买 nike

我在 Blazor 服务器端应用程序中有以下代码:

<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Email</th>
<th>Name</th>
</tr>
</thead>
<tbody>
@foreach (var applicationUser in ApplicationUsers)
{
string userId = applicationUser.Id;
Guid? personId = applicationUser.PersonId;

<tr>
<td>@applicationUser.Email</td>
<td>@applicationUser.PersonName</td>
@if (personId != null)
{
<td>
<button class="btn btn-block btn-primary" @onclick="() => ShowEditPersonDialog(personId)" style="color: rgb(255, 255, 255); background-color: rgb(49, 56, 215);" @type="button">Edit Person</button>
</td>
}
</tr>
}
</tbody>
</table>
</div>
然而这: @onclick="() => ShowEditPersonDialog(personId)"...不起作用。由于它在组件上方加载,直到第一行上的第一个按钮(有 4 个用户 - 应加载 4 行),然后按钮无法正确呈现并引发未处理的异常:
Blazor application exception
我试过了:
  • @onclick="() => ShowEditPersonDialog(personId)" - 上面显示的异常
  • @onclick="(e) => ShowEditPersonDialog(e, personId)" - 上面显示的异常
  • @onclick="e => ShowEditPersonDialog(e, personId)" - 上面显示的异常
  • @onclick="@(e => ShowEditPersonDialog(e, personId))" - 上面显示的异常
  • @onclick="(e) => ShowEditPersonDialog(e)" - 上面显示的异常
  • @onclick="e => ShowEditPersonDialog(e)" - 上面显示的异常
  • @onclick="@(e => ShowEditPersonDialog(e))" - 上面显示的异常
  • @onclick="() => ShowEditPersonDialog()" - 上面显示的异常
  • @onclick=@"() => ShowEditPersonDialog(personId)" - 无法编译,语法错误
  • @onclick="@(() => ShowEditPersonDialog(personId))" - 上面显示的异常
  • onclick="() => ShowEditPersonDialog(personId)" - 编译、运行和渲染,但按钮没有响应
  • onclick="@(() => ShowEditPersonDialog(personId))" - 不编译 - 无法将 lambda 表达式转换为类型“对象”,因为它不是委托(delegate)类型
  • onclick="(e) => ShowEditPersonDialog(e, personId)" - 编译、运行和渲染,但按钮没有响应
  • onclick="e => ShowEditPersonDialog(e, personId)" - 编译、运行和渲染,但按钮没有响应
  • onclick="@((e) => ShowEditPersonDialog(e, personId))" - 不编译 - 无法将 lambda 表达式转换为类型“对象”,因为它不是委托(delegate)类型
  • onclick="@(e => ShowEditPersonDialog(e, personId))" - 不编译 - 无法将 lambda 表达式转换为类型“对象”,因为它不是委托(delegate)类型
  • onclick="@(e => ShowEditPersonDialog(e))" - 不编译 - 无法将 lambda 表达式转换为类型“对象”,因为它不是委托(delegate)类型

  • 我怎么写这个东西??我只是想要一个按钮将给定行的相关 personId 传递给 ShowEditPersonDialog 方法。

    最佳答案

    将您的按钮更改为此 - 删除 @来自 type="button"并使用 @onclick="@(() => ShowEditPersonDialog(personId))"

    <button class="btn btn-block btn-primary" 
    @onclick="@(() => ShowEditPersonDialog(personId))"
    style="color: rgb(255, 255, 255); background-color: rgb(49, 56, 215);"
    type="button">Edit Person</button>
    将内联按钮 css 样式移动到 css 文件中的类也很好,这样 HTML 标记更易于阅读:)

    关于c# - 如何在 Blazor 中将带有参数的 onclick 添加到按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63690894/

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