Blazor 如何通过渲染树生成器添加navlink事件处理程序?
有人能帮我在NavLink上添加事件处理程序吗? 我想制作的HTML:Blazor 如何通过渲染树生成器添加navlink事件处理程序?,blazor,render,Blazor,Render,有人能帮我在NavLink上添加事件处理程序吗? 我想制作的HTML: <NavLink class="nav-link" href="/" @onclick="()=>GetIsClicked("home")"> <span class="oi oi-home" aria-hidden="true">Home</span&g
<NavLink class="nav-link" href="/" @onclick="()=>GetIsClicked("home")">
<span class="oi oi-home" aria-hidden="true">Home</span>
</NavLink>
@code{
public void GetIsClicked(string str) {
}
}
家
@代码{
public void GetIsClicked(字符串str){
}
}
RenderTreeBuilder代码:
protected override void BuildRenderTree(RenderTreeBuilder builder) {
builder.OpenComponent<NavLink>(1);
builder.AddAttribute(2, "class", "nav-link");
builder.AddAttribute(3, "href", "/");
// here I want to add attribute for @onclick="()=>GetIsClicked("home")"
builder.AddAttribute(4, "ChildContent", (RenderFragment)((builder2) => {
builder2.OpenElement(5, "span");
builder2.AddAttribute(6, "aria-hidden", "true");
builder2.AddAttribute(7, "class", "oi oi-home");
builder2.CloseElement();
builder2.AddContent(8, "Home");
}));
builder.CloseComponent();
builder.CloseElement();
builder.CloseElement();
}
protected override void BuildRenderTree(RenderTreeBuilder){
OpenComponent(1);
builder.AddAttribute(2,“类”、“导航链接”);
builder.AddAttribute(3,“href”,“/”;
//这里我想为@onclick=“()=>GetIsClicked(“home”)添加属性
builder.AddAttribute(4,“ChildContent”,(RenderFragment)((builder2)=>{
建造商2.开口构件(5,“跨度”);
builder2.AddAttribute(6,“aria隐藏”,“true”);
builder2.AddAttribute(7,“类”,“oi oi home”);
builder2.CloseElement();
构建者2.添加内容(8,“主页”);
}));
builder.CloseComponent();
builder.CloseElement();
builder.CloseElement();
}
提前谢谢。
Joon你可以这样做:
__builder.OpenComponent<Microsoft.AspNetCore.Components.Routing.NavLink>(1);
__builder.AddAttribute(2, "onclick", Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.Web.MouseEventArgs>(this, ()=>GetIsClicked("home")));
OpenComponent(1);
__builder.AddAttribute(2,“onclick”,Microsoft.AspNetCore.Components.EventCallback.Factory.Create(this,()=>GetIsClicked(“home”));