共享blazor组件中的按钮和自定义事件处理程序的列表



我对此束手无策,我一直在网上尝试各种方法,但似乎没有取得任何进展。

我有一个共享组件,在本例中是一个模仿web表单时代的列表视图的组件。我希望任何未来的开发人员都能在项目中实现列表视图,并能够构建一组附加到每一行的自定义按钮(这一点我可以很好地工作(。我遇到的问题是能够为每个按钮分配一个自定义的Action处理程序,以便在列表视图的父组件上运行一个方法。我有一门课是这样的:

using System;
namespace Speedy.Razor.SharedComponents.WebFormComponents.Shared
{
public class CustomAction
{
public string Name { get; set; }
public string Icon { get; set; }
public Action<int> OnClick { get; set; }
}
}

我将其应用于这样的行:

foreach (var customAction in CustomActions)
{
<span class="@customAction.Icon" @onclick='() => customAction.OnClick(obj.Id)'></span>
}

这还可以。

然后我尝试创建如下的自定义操作列表:

List<CustomAction> customActions = new List<CustomAction>()
{
new CustomAction {Name = "Edit", Icon="oi oi-pencil", OnClick =  },
new CustomAction {Name = "Contacts", Icon="oi oi-person", OnClick = }
};

我尝试过委托,但似乎无法激发所需的方法,除非它是静态的,这是我不想要的;或者我需要创建一个对导致Blazor问题的类的引用,作为对组件上导致StateHasChanged失败的类的新引用。

有什么想法吗?

感谢

为每个按钮分配一个自定义Action处理程序,以便在列表视图的父组件上运行一个方法

假设customActions也是该父组件的成员,只需在同一级别定义一个方法:

List<CustomAction> customActions = new List<CustomAction>()
{
new CustomAction {Name = "Edit", Icon="oi oi-pencil", OnClick = ClickHandler },
new CustomAction {Name = "Contacts", Icon="oi oi-person", OnClick = ClickHandler }
};
void ClickHandler(int id)
{
... 
}

这正在工作。。。复制并运行它。如果您有问题,请提出,因为我不确定我应该在这里解释什么。

索引.razor

@page "/"
@foreach (var customAction in customActions)
{
count++;
<span class="@customAction.Icon" @onclick="@(() => 
customAction.OnClick(count))"></span>
}
@code{
List<CustomAction> customActions;
private int count = 10;

private void myclick(int myint)
{
Console.WriteLine(myint.ToString());
}
private void myclick2(int myint)
{
Console.WriteLine(myint.ToString());
}
protected override void OnInitialized()
{
customActions = new List<CustomAction>()
{
new CustomAction {Name = "Edit", Icon="oi oi-pencil", OnClick = myclick  
},
new CustomAction {Name = "Contacts", Icon="oi oi-person", OnClick = 
myclick2} };
base.OnInitialized();
}
}

谢谢你的回复,真的很简单,看了你的例子后,我意识到我遇到这些问题的原因,这在我最初的问题中并不明显。我试图在一个无法访问类中非静态方法的方法之外初始化List。

再次感谢你帮我发现这个!

相关内容

  • 没有找到相关文章

最新更新