[英]Blazor pass variable and call event from .razor on a html created using RenderTreeBuilder on a C# class
I'm creating a tree structure using Blazor and I need to get the value of the node clicked and send it to a function on the View to remove it from the tree.我正在使用 Blazor 创建树结构,我需要获取单击的节点的值并将其发送到视图上的 function 以将其从树中删除。
This is the C# code that is generating the tree:这是生成树的 C# 代码:
BinaryTreeService.cs二叉树服务.cs
public void PreOrderTraversal(RenderTreeBuilder builder, BinaryTreeNode node)
{
if (node != null)
{
//Some Code
builder.OpenElement(2, "a");
builder.AddAttribute(2, "href", "javascript: void(0)");
builder.AddAttribute(2, "value", node.Value);
builder.AddAttribute(3, "onclick", EventCallback.Factory.Create(this, -->Remove(value)<--));
builder.AddContent(2, node.Value);
builder.CloseElement();
PreOrderTraversal(builder, node.Left);
PreOrderTraversal(builder, node.Right);
//Some Code
}
}
Where is the -->Remove(value)<-- I want to call a function and pass a value. -->Remove(value)<-- 我想调用 function 并传递一个值。
BinaryTree.razor BinaryTree.razor
public void Remove(int value)
{
//remove
}
How can I achieve it?我怎样才能实现它? I know how to call a function in the.cs but I don't know how to call one in the.razor, also I have no idea how to get the value from the anchor tag using this approach.
我知道如何在 .cs 中调用 function,但我不知道如何在 .razor 中调用一个,我也不知道如何使用这种方法从锚标记中获取值。
i use this simple code, but i use razor component not use element.我使用这个简单的代码,但我使用 razor 组件不使用元素。
mybutton.razor我的按钮.razor
@code {
[Parameter]
public int Value {get;set;}
[Parameter]
public EventCallback<int> AnswerEvent { get; set; }
public void PressButtonOk()
{
AnswerEvent.InvokeAsync(Value);
}
}
<div @onclick="PressButtonOk">OK</div>
MyCode.cs我的代码.cs
public void PreOrderTraversal(RenderTreeBuilder builder, BinaryTreeNode node)
{
if (node != null)
{
builder.OpenControl(0, "mybutton");
builder.AddAttribute(0, "Value", node.Value);
builder.AddAttribute(0, "onclick", EventCallback.Factory.Create<int>(this, Remove(value)));
builder.CloseControl();
}
}
public void Remove(int value) { }
Good luck祝你好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.