Blazor CascadingParameter 始终为 null
新的是Blazor,很难从我的mainlayout.razor
中填充cascadingParameter
:
@code
{
private Toasts Toasts { get; set; }
}
<Toasts @ref="@Toasts" />
<CascadingValue Value="Toasts">
@Body
</CascadingValue>
and index.razor
page> page:
[CascadingParameter]
public Toasts Toasts { get; set; }
public async Task PackageChanged(string value)
{
Toasts.Something(value); //Toasts is null here
}
toasts.razor:razor:razor:razor:razor:razor:razor:razor:
@code {
private string Message { get; set; }
public void Something(string message)
{
Message = message;
StateHasChanged();
}
}
@Message
下面的代码令人沮丧地有效,但是我想估算一个组件(&lt; toasts /&gt; < /code>),而不是整个布局:
<CascadingValue Value="@this">
<Toasts @ref="@Toasts" />
@Body
</CascadingValue>
然后索引:
[CascadingParameter]
public MainLayout Layout { get; set; }
public async Task PackageChanged(string value)
{
Layout.Toasts.Something(value); //this behaves as expected
}
New to Blazor, having trouble getting a CascadingParameter
to populate from my MainLayout.razor
:
@code
{
private Toasts Toasts { get; set; }
}
<Toasts @ref="@Toasts" />
<CascadingValue Value="Toasts">
@Body
</CascadingValue>
And Index.razor
page:
[CascadingParameter]
public Toasts Toasts { get; set; }
public async Task PackageChanged(string value)
{
Toasts.Something(value); //Toasts is null here
}
And finally Toasts.razor:
@code {
private string Message { get; set; }
public void Something(string message)
{
Message = message;
StateHasChanged();
}
}
@Message
This code below frustratingly works, but I'd like to cascade just the one component (<Toasts />
) instead of the whole layout:
<CascadingValue Value="@this">
<Toasts @ref="@Toasts" />
@Body
</CascadingValue>
And then index:
[CascadingParameter]
public MainLayout Layout { get; set; }
public async Task PackageChanged(string value)
{
Layout.Toasts.Something(value); //this behaves as expected
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这段代码对我有用
MainLayout...部分代码
下面的解决方案,我们级联对 MainLayout 的引用,然后检索对 Toasts 组件的引用,比上面的解决方案更有效,因为它不需要MainLayout 进行第二次渲染。
MainLayout...部分代码
Index.razor
This code is working for me
MainLayout...partial code
The following solution, in which we cascade a reference to MainLayout, and then retrieve a reference to the Toasts component, is a bit more effective than the one above, as it does not require the MainLayout to render a second time.
MainLayout...partial code
Index.razor
MainLayout.razor 中的此语句不起作用
但此语句有效且 index.razor 中的级联参数不为 null
似乎 Blazor 不允许将元素引用作为级联参数传递,而只允许对象和其他变量。我没有您的要求的完整背景,但您可以尝试将 Toast 实现为服务。
This statement in MainLayout.razor do not work
But this statement works and cascading parameter in index.razor is not null
Seems that Blazor do not allow to pass element references as cascading parameter but only allows object and other variables. I do not have full context of your requirements, but you can try implementing Toasts as a service.