Blazor EditForm:如何处理与未定义相同的空值

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

我正在 Blazor WASM 应用程序中使用带有验证的 EditForm 组件。 我遇到的问题是,如果我在 InputText 中输入一个输入,然后决定将其删除,则表单的行为就像我输入了空值一样。后果要么是

  1. 该字段变为红色,因为该值由于 [MinLength] 等约束而无效
  2. 如果没有长度限制,该字段会变成绿色

我希望它的行为就像从未输入过一样。所以,基本上,跳过验证。在理想的世界中,我还希望在绑定模型中使用 null 而不是空字符串,但这并不重要,因为我可以在提交操作中安排它。

有什么想法可以简单地实现这一点吗?

c# html blazor webassembly
1个回答
0
投票

我相信您需要制作一个自定义验证器。微软文档为此提供了一个不错的指南。我在正在处理的 Blazor Server 应用程序表单中遇到了同样的问题。下面是我除了模型类中的 StringLength 属性之外还使用的自定义验证器。如果您在文本字段中输入某些内容,然后将其删除(就像您所描述的那样),它将触发错误消息。

    public class CustomValidator : ValidationAttribute
{
    public string GetErrorMessage() => "Invalid Text";

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {

        if (value == null || String.IsNullOrEmpty(value.ToString()))
        {
            return new ValidationResult(GetErrorMessage());
        }

        return ValidationResult.Success;
    }
}

***** 模型属性注释 *****

[CustomValidator]
public string Text { get; set; }
© www.soinside.com 2019 - 2024. All rights reserved.