以编程方式Blazor CascadingValue

问题描述 投票:0回答:1

我创建了一个自己的基本组件,我希望所有基本组件都继承自该基本组件

public class BaseComponent : ComponentBase
{
    // ...
}

页面组件:

@page "/apage"
@inherits BaseComponent
<CascadingValue Value="this">
    <div>
        <MyOtherComponent />
    </div>
</CascadingValue>

在我想做的MyOtherComponent中:

[CascadingParameter]
public BaseComponent BaseComponent { get; set; }

直到这里所有作品。但是我想改进,我希望每个页面组件都应设为CascadingValue Value="this",因为从BaseComponent继承的每个页面都应为需要该引用的所有子组件提供BaseComponent引用。

所以页面组件应该像这样:

@page "/apage"
@inherits BaseComponent
<div>
    <MyOtherComponent />
</div>

并且CascadingValue Value =“ this”的逻辑应移入BaseComponent。我该怎么办?

c# asp.net razor blazor webassembly
1个回答
0
投票

我不确定是否能得到您...如果将Apage组件公开为CascadingValue,如下所示:

Apage.razor

 @page "/apage"
 @inherits BaseComponent
 <CascadingValue Value="this">
     <div>
         <MyOtherComponent />
     </div>
 </CascadingValue>

然后,在MyOtherComponent中,您应该具有这样的CascadingParameter:

MyOtherComponent.razor

[CascadingParameter]
public Apage Apage{ get; set; }

不是

[CascadingParameter]
public BaseComponent BaseComponent { get; set; }

请请澄清一下,我会尽力回答我的问题...

© www.soinside.com 2019 - 2024. All rights reserved.