【问题标题】:Blazor Modal declaration throws CS8625 upon compilationBlazor Modal 声明在编译时抛出 CS8625
【发布时间】:2022-07-19 17:44:23
【问题描述】:

我正在使用 Blazorise 模态功能 (as seen here)。我正在通过以下代码关注文档:

<Modal @ref="ModalRef1">
  <ModalContent Centered>
    <ModalHeader>
      <ModalTitle>Sample Title</ModalTitle>
    </ModalHeader>
    <ModalBody>
      <Field>
        <FieldLabel>Sample Field Content</FieldLabel>
      </Field>
    </ModalBody>
    <ModalFooter>
      <Button Color="Color.Warning" Clicked="@HideModal1">OK</Button>
    </ModalFooter>
  </ModalContent>
</Modal>

使用以下实例声明:

@code{
  private Modal ModalRef1 = new Modal();
}

由于某种原因,HMTL 声明会为每个 HTML 声明引发“无法将 null 文字转换为不可为空的引用类型”错误。鉴于我在整个项目中使用了大量的模态对话框,您可以看到这会变得多么烦人。我该如何解决? #pragma warning disable CS8625 不起作用,Modal C# 类除了默认构造函数外没有其他构造函数。

【问题讨论】:

  • @HenkHolterman 术语细节不谈,警告很烦人,我想摆脱它。团队想要一个干净编译的项目,警告和错误在他们眼里是一回事。
  • 尝试更改“private Modal ModalRef1 = new Modal();”只需“private Modal ModalRef1;”,即 Blazorise 示例代码中显示的内容。
  • 好吧,仍然:没有复制。这一点以及我们缺少/ 的事实让我觉得我们在这里看的不是真正的代码。错误已被掩埋。
  • @Roberto 不起作用 - 在 HTML 中的 &lt;Modal&gt; 标记处生成警告。
  • @HenkHolterman 我避免发布实际代码,因为它是专有的。这与我的代码相同,但使用占位符值进行了复制。

标签: blazor blazorise


【解决方案1】:

您只需将字段类型设为可为空即可。

@code {
    private Modal? ModalRef1;
}

您的项目中的 .csproj 文件中可能有 &lt;Nullable&gt;enable&lt;/Nullable&gt;。此设置使所有类型都被视为不可为空,并且当您希望它接受空值时必须明确。 Modal 的@ref 属性需要Modal? 参数,而您传递的是Modal。这就是您收到警告的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多