C# 未捕获引用错误:未定义OnClickCallback ASP.NET Blazor客户端

C# 未捕获引用错误:未定义OnClickCallback ASP.NET Blazor客户端,c#,asp.net,asp.net-core,asp.net-web-api,blazor,C#,Asp.net,Asp.net Core,Asp.net Web Api,Blazor,我试图调用一个事件的属性,查看MSDN和一些模态窗口的stackoverflow帖子。但是,我在浏览器控制台中得到一个错误,称为UncaughtReferenceError:OnClickCallback未定义。我和Blazor的客户一起工作 我的组件 <div class="modal @ModalClass" tabindex="-1" role="dialog" style="display:@ModalDisplay"> <div class="modal-di

我试图调用一个事件的属性,查看MSDN和一些模态窗口的stackoverflow帖子。但是,我在浏览器控制台中得到一个错误,称为UncaughtReferenceError:OnClickCallback未定义。我和Blazor的客户一起工作

我的组件

<div class="modal @ModalClass" tabindex="-1" role="dialog" style="display:@ModalDisplay">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">@Title</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close" @onclick="() => Close()">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <p>@ChildContent</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-primary" onclick="OnClickCallback">Continue</button>
                <button type="button" class="btn btn-secondary" data-dismiss="modal" @onclick="() => Close()">Close</button>
            </div>
        </div>
    </div>
</div>

@if (ShowBackdrop)
{
    <div class="modal-backdrop fade show"></div>
}

@code {

    public Guid Guid = Guid.NewGuid();
    public string ModalDisplay = "none;";
    public string ModalClass = "";
    public bool ShowBackdrop = false;

    [Parameter]
    public string Title { get; set; }

    [Parameter]
    public RenderFragment ChildContent { get; set; }

    [Parameter]
    public EventCallback<MouseEventArgs> OnClickCallback { get; set; }

    public void Open()
    {
        ModalDisplay = "block;";
        ModalClass = "Show";
        ShowBackdrop = true;
        StateHasChanged();
    }

    public void Close()
    {
        ModalDisplay = "none";
        ModalClass = "";
        ShowBackdrop = false;
        StateHasChanged();
    }

}
@代码

我已经查阅了官方文件,但没有任何效果


有人知道我的密码有什么错误吗

当你做这样的事情时:

OnClickCallback="@AddNewEducation"
您告诉编译器OnClickCallback属性表示子组件中的EventCallBack“delegate”,并且希望在触发委托时调用AddNewEducation方法。这很好。这是:

[Parameter]
public EventCallback<MouseEventArgs> OnClickCallback { get; set; }
也可以。现在,您需要的是触发OnClickCallback“委托”的代码。我能看到的使用此委托的唯一代码是:

<button type="button" class="btn btn-primary" 
                              onclick="OnClickCallback">Continue</button>
此代码呈现一个Html按钮元素,该元素的onclick属性已分配 在单击回调时使用字符串值。然而,我想你的意思是:当我点击按钮时触发代理,对吗

有两种方法可以做到这一点。这里有一个:

<button type="button" class="btn btn-primary" 
                     @onclick="@((args) => 
                         OnClickCallback.Invoke(args))">Continue</button>
注意:@onclick compiler attribute指令指示编译器以lambda表达式的形式创建单击事件处理程序,该表达式调用onclick回调委托,该委托封装在父级上定义的AddNewEducation方法,并将MouseEventArgs参数传递给它


希望这有助于

我试过这个。但编译器正在抛出错误,无法将lambda表达式转换为“object”类型,因为它不是委托类型ignore my previous comment。成功了。谢谢。我的密码有错误。我写的是onclick而不是@onclick。这就是为什么我遇到了无法将lambda表达式转换为类型的错误
<button type="button" class="btn btn-primary" 
                              onclick="OnClickCallback">Continue</button>
<button type="button" class="btn btn-primary" 
                     @onclick="@((args) => 
                         OnClickCallback.Invoke(args))">Continue</button>