Sup*_*Bob 1 c# model-view-controller model-validation data-annotations asp.net-core
据我了解,值类型隐式具有[Required]属性 whenMvcOptions.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes设置为false。但坦率地说,当我在两者之间切换时,我看不出有什么区别。
此外,如果我[Required]在不可空类型(例如 an )上显式使用该属性int,则需要我设置其值,而不是仅在没有给定int参数的情况下命中端点,该参数将为其类型分配默认值- 0.
所以,总结一下:
如果它隐式添加[Required]属性,为什么显式变体提供完全不同的功能?
启用/禁用有任何功能差异吗MvcOptions.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes?据我所知,它没有改变任何东西。
我实际上还没有尝试过这个设置,但我认为线索就在名称中: SuppressImplicitRequiredAttributeFor NonNullableReferenceTypes。
听起来它不适用于值类型。它适用于不可为 null 的引用类型。
正如您所说,具有类型的属性int始终具有默认值,模型验证器不知道该值是否丢失或是否已设置为该值。
但是,如果启用 C# 8 可空引用类型,则可能具有如下属性:
public string A { get; set; }
public string? B { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在,设置该设置后,该A属性将获得“Required”属性。它仍然是一个引用类型并且可以为 null。因此,检查是有意义的。
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |