asp.net - 如何在 Blazor RenderFragment CodeBehind 上正确添加 OnClick 处理程序
问题描述
作为我项目特定需求的一部分,我必须在 Blazor 代码隐藏(.cs 文件)上使用渲染片段。使用下面的代码,我能够正确呈现按钮,但是 @onclick 处理程序似乎无法正常工作或被击中。
如何在渲染片段构建器中正确添加 onclick?
RenderFragment template = builder =>
{
builder.AddMarkupContent(1, $"<button class='btn btn-success' @onclick='() => OnToastClick({toastDetail.Key})'>{toastDetail.Key}</button>");
};
解决方案
AddMarkupContent()
添加HTML标记,它不解析 Razor 内容。
我能想到的最好的:
RenderFragment template(IComponent owner, ToastDetail toastDetail)
{
return builder =>
{
builder.OpenElement(1, "button");
builder.AddAttribute(2, "class", "btn btn-success");
builder.AddAttribute(3, "onclick",
Microsoft.AspNetCore.Components.EventCallback.Factory.Create(owner,
() => OnToastClick(toastDetail.Key)));
builder.AddContent(4, toastDetail.Key);
builder.CloseElement();
};
}
然后你可以像这样使用它
@template(this, toastDetail)
推荐阅读
- mysql - F# MySQL 类型提供程序,参考/包,Linux Monodevelop
- traffic - IoT Edge AMQP 流量开销
- wordpress - Wordpress 固定菜单仅在桌面上
- javascript - 在没有安全确认的情况下打开新窗口?
- android - 带有背景的Android可重用布局导致lint overdraw错误
- javascript - javascript - 是否可以在服务器端阻止 xmlhttprequest 函数?
- html - “发送”按钮链接到联系表
- ios - 另一个集合视图中的集合视图:部分标题或单元格?
- php - SLIM FRAMEWORK 3:无法将变量从中间件传递到控制器
- swift - 如何访问函数变量并将其从超级视图中删除?