传递空回调 Blazor

ame*_*lon 5 c# asp.net-core blazor

我有一个以回调作为参数的组件。我只想在某个条件成立时向它传递回调。Callback.HasDelegate我可以传递给它什么会导致检查失败

就像是

<EntityActionMenu  DeleteCallback="@(Item.Id == 0 ? null : EventCallback.Factory.Create(this, Delete))"></EntityActionMenu>
Run Code Online (Sandbox Code Playgroud)

或者

<EntityActionMenu SaveCallback="@Save" DeleteCallback="@(Item.Id == 0 ? EventCallback.Factory.Create(this, Task<null>) : EventCallback.Factory.Create(this, Delete))" ></EntityActionMenu>
Run Code Online (Sandbox Code Playgroud)

编辑

这是接收组件

@if (DeleteCallback.HasDelegate)
        {
            <MatButton Raised="true" OnClick="@(() => DeleteCallback.InvokeAsync(""))" Class="warn">Delete</MatButton>
        }

@code {

    [Parameter] public EventCallback DeleteCallback { get; set; }

    protected override void OnInitialized()
    {
        System.Diagnostics.Debug.WriteLine(DeleteCallback.HasDelegate);
    }

    protected override void OnParametersSet()
    {
        System.Diagnostics.Debug.WriteLine(DeleteCallback.HasDelegate);
    }
Run Code Online (Sandbox Code Playgroud)

}

Col*_*con 0

为什么不在回调方法中检查 id 呢?

假设以下代码EntityActionMenu

[Parameter]
public EventCallback<int> DeleteCallback { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

<EntityActionMenu  DeleteCallback="@Delete"></EntityActionMenu>

@code {
   protected void Delete(int id)
   {
       if (id == 0) return;

       /* your code */ 
   }
}
Run Code Online (Sandbox Code Playgroud)