Blazor 组件中所需的级联参数

Posted

技术标签:

【中文标题】Blazor 组件中所需的级联参数【英文标题】:Required cascading parameters in Blazor components 【发布时间】:2022-01-20 21:14:37 【问题描述】:
[Parameter, EditorRequired]
public int Parameter  get; set;  = default!;

[CascadingParameter, EditorRequired]
public int Parameter2  get; set;  = default!;

EditorRequired 属性仅针对常规参数发出 RZ2012。如果我不设置级联参数,有没有办法获得编译时警告?

【问题讨论】:

您认为该错误在哪里?当父母“没有设置”时,这是一个应用程序范围内的失败,很难错过。如果 Child 没有收到它,该属性放在哪里? 我会像示例中一样将属性放在 CascadingParameter 旁边,以及它如何为 Parameter 工作。如果组件从未用 包装,那么我会期待像 RZ2012 这样的警告。这必须像您建议的那样在应用程序范围内进行检查。是的,这不是“很难错过”,但我更喜欢编译时检查而不是运行时失败,因为会抛出 NullPointerException。 【参考方案1】:

我很确定它不适用于 CascadingParameter。

这是来自 ValidationSummary 的 AspNetCore 团队的代码,它需要 EditContext 级联。

        if (CurrentEditContext == null)
        
            throw new InvalidOperationException($"nameof(ValidationSummary) requires a cascading parameter " +
                $"of type nameof(EditContext). For example, you can use nameof(ValidationSummary) inside " +
                $"an nameof(EditForm).");
        

【讨论】:

以上是关于Blazor 组件中所需的级联参数的主要内容,如果未能解决你的问题,请参考以下文章

基于element ui的级联选择器组件实现的分类后台接口

Blazor University (10)组件 — 捕获意外参数

训练稳健的级联分类器时要考虑的建议?

Blazor封装一个显示Markdown的组件

js基于json的级联下拉框

Hello Blazor:(15)使用bUnit进行单元测试