C# Blazor事件回调问题父/子组件“;没有与名称';匹配的属性;onclick回调'&引用;

C# Blazor事件回调问题父/子组件“;没有与名称';匹配的属性;onclick回调'&引用;,c#,html,events,callback,blazor,C#,Html,Events,Callback,Blazor,问题 因此,我在Blazor中遇到了一个问题,我试图从子组件(NavMenu)调用MainLayout父组件中的一个方法。我所要做的就是在NavMenu子组件中的一个按钮告诉我打开MainLayout父组件中的一个对话框 我假设这是允许的,因为NavMenu和MainLayout的父/子概念仍然相同 我尝试过的 我已经遵循了这一原则,但我似乎根本无法实现这一目标。我希望我正在做一些愚蠢的事情,一双新的眼睛可能会发现这个问题 当前结果 基本上,一切都很好,但当我运行应用程序时,web控制台中会显示

问题

因此,我在Blazor中遇到了一个问题,我试图从子组件(NavMenu)调用MainLayout父组件中的一个方法。我所要做的就是在NavMenu子组件中的一个按钮告诉我打开MainLayout父组件中的一个对话框

我假设这是允许的,因为NavMenu和MainLayout的父/子概念仍然相同

我尝试过的

我已经遵循了这一原则,但我似乎根本无法实现这一目标。我希望我正在做一些愚蠢的事情,一双新的眼睛可能会发现这个问题

当前结果

基本上,一切都很好,但当我运行应用程序时,web控制台中会显示以下错误:

Error: System.InvalidOperationException: Object of type 'MyProject.Shared.Components.NavMenu' does not have a property matching the name 'OnClickCallback'.
代码

父组件(主布局)


文本值:@Text
@代码{
私有字符串文本{get;set;}
异步任务Foo()
{
text=“有效”;
//实际上,我会在屏幕上打开一个对话框
}
}
子组件(导航菜单)


设置测试应用程序设置
@代码{
[参数]
public EventCallback OnClickCallback{get;set;}
//我还尝试了“type”事件回调,例如public EventCallback OnClickCallback{get;set;}-但仍然得到相同的结果
}
这是我有史以来第一个堆栈溢出问题,所以希望我做得正确

提前谢谢大家

解决方案:

在一些有用的答案之后,这个问题是因为我有两个NavMenu组件,其中一个我认为主布局看不到,但事实并非如此,因此我消除了两者之间的歧义

一些答案还显示,我的父组件OnClickCallback=“@Foo()”应该是OnClickCallback=“Foo”,这实际上解决了我后来遇到的一个问题

“我的孩子”组件现在还使用:

调用父组件中的回调,父组件现在会按预期打开我的对话框


感谢所有帮助过它的人。

错误非常明显:

。NavMenu“”没有与名称“OnClickCallback”匹配的属性

因此错误与您的代码不匹配。NavMenu子组件确实具有该参数属性

您应该使用
、no
@
()
,但这不能解释此错误


最好的猜测是,您有两个名为
的组件,您看到的是错误的组件。

我更新了我的答案。尝试添加到问题底部的代码…解决方案
<NavMenu OnClickCallback="@Foo()">
   <label>Text value: @text</label>
</NavMenu>

@code {
    private string text { get; set; }

    async Task Foo()
    {
        text = "IT WORKS";
        // In reality I will actually open a dialog here on the screen
    }
}
<MatNavItem AllowSelection="false" @onclick="OnClickCallback">
    <MatIcon>settings</MatIcon><span class="miniHover"> Test App Settings</span>
</MatNavItem>

@code {

    [Parameter]
    public EventCallback OnClickCallback { get; set; }
    // I have also tried the "type" event callbacks such as public EventCallback<bool> OnClickCallback { get; set; } - but still get the same result
}