如何使这些控件成为不需要的?
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; } = "";
我们已经开始将一些 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; } = "";