我正在 Blazor WASM 应用程序中使用带有验证的 EditForm 组件。 我遇到的问题是,如果我在 InputText 中输入一个输入,然后决定将其删除,则表单的行为就像我输入了空值一样。后果要么是
我希望它的行为就像从未输入过一样。所以,基本上,跳过验证。在理想的世界中,我还希望在绑定模型中使用 null 而不是空字符串,但这并不重要,因为我可以在提交操作中安排它。
有什么想法可以简单地实现这一点吗?
我相信您需要制作一个自定义验证器。微软文档为此提供了一个不错的指南。我在正在处理的 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; }