C# 未捕获引用错误:未定义OnClickCallback ASP.NET Blazor客户端
我试图调用一个事件的属性,查看MSDN和一些模态窗口的stackoverflow帖子。但是,我在浏览器控制台中得到一个错误,称为UncaughtReferenceError:OnClickCallback未定义。我和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
<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">×</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>