如何使这些控件成为不需要的?

How do I make these controls NOT required?

我们已经开始将一些 Web 表单重构为 .NET6 (MVC C# Razor)

我没有做任何我知道的使我的可选控件成为必需控件的事情,但浏览器仍然需要它们。如何使此控件成为可选控件?

在 C# 中 class:

[Display(Name = "Web link for more info")]
[Required(AllowEmptyStrings = true)] // I tried removing this but it makes no difference
public string MoreInfoURL { get; set; } = "";

在 Razor cshtml:

@Html.LabelFor(model => model.MoreInfoURL)
<span class="description">Web address to a page that provides more information for interested audiences</span>
@Html.TextBoxFor(model => model.MoreInfoURL, new {placeholder = "(optional)"})

生成的html

<label for="MoreInfoURL">Web link for more info</label>
<span class="description">Web address to a page that provides more information for interested audiences</span>
<input data-val="true" id="MoreInfoURL" name="MoreInfoURL" placeholder="(optional)" type="text" value="">

结果:当我尝试提交此控件为空的表单时,浏览器跳起来并突出显示该控件,就像它要求我输入它一样 - 即使我没有做任何事情来使其成为必需的(它们起作用了在以前版本的 .NET 中正确)

我做错了什么?

Nullable element 配置编译器如何解释类​​型的可空性以及发出的警告。启用意味着 Non-nullable 除非用 ? 声明。这里有两个解决方案:

1.Remove <Nullable>enable</Nullable> 在 .csproj 文件中并删除 Required 属性。

2.Try 将 ? 添加到 MoreInfoURL 并删除 Required 属性。

[Display(Name = "Web link for more info")]
public string? MoreInfoURL { get; set; } = "";