如何在 Blazor RenderFragment CodeBehind 上正确添加 OnClick 处理程序
How to properly add an OnClick handler on Blazor RenderFragment CodeBehind
作为项目特定需求的一部分,我必须在 Blazor 代码隐藏(.cs 文件)上使用渲染片段。使用下面的代码,我能够正确呈现一个按钮,但是 @onclick 处理程序似乎无法正常工作或被点击。
如何在 renderfragment 构建器中正确添加 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)
作为项目特定需求的一部分,我必须在 Blazor 代码隐藏(.cs 文件)上使用渲染片段。使用下面的代码,我能够正确呈现一个按钮,但是 @onclick 处理程序似乎无法正常工作或被点击。
如何在 renderfragment 构建器中正确添加 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)