【发布时间】:2021-11-29 17:19:15
【问题描述】:
我有一个 Blazor EditForm 用于编辑以前创建的对象。允许用户编辑的字段之一是名为Link 的string 属性,它带有[Url] 注释。此字段未使用 [Required] 属性进行注释,我不希望这样。
创建对象时,我可以在表单中将此字段留空,没问题。如果我编辑一个带有已经空白的Link 字段的对象,它也可以正常工作。
当我尝试编辑对象并删除之前在对象中的Link 时出现问题(清除表单字段)。我收到 Url DataAnnotation 消息(“链接字段不是有效的完全限定的 http、https 或 ftp URL。”)并且我无法提交表单。我向属性 [DataFormat(ConvertEmptyStringToNull = true)] 添加了另一个 DataAnnotation,认为这可以解决我的问题并将空字符串转换为 null,但它不会改变任何内容。
属性:
[Url]
[DisplayFormat(ConvertEmptyStringToNull = true)]
public string Link { get; set; }
表格:
<div class="form-group">
<label for="Link">Link</label>
<InputText @bind-Value=Item.Link class="form-control"/>
<ValidationMessage For=@(() => Item.Link)/>
</div>
编辑:这似乎是“设计使然”(即 .NET 工程师拒绝修复的错误)https://github.com/dotnet/runtime/issues/53820
【问题讨论】:
标签: c# asp.net-core blazor