gpt4 book ai didi

c# - 属性为 [Required] 且可为 null 是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 04:53:34 26 4
gpt4 key购买 nike

[Required] 和可为空的属性是什么意思? (下面的示例)似乎如果它是 [Required] 它不可能是 null (没有值),如果它能够是 null 它不可能是 [Required]

[Required]
public DateTime? OrderDate { get; set; }

最佳答案

使属性可为空并标记为 [Required] 的原因属性是为了防止发布不足的攻击。它还允许您在 View 中显示初始空值而不是属性的默认值。这通常是通过 View 模型中的值类型属性完成的。

发布不足的攻击是指恶意用户修改请求以省略请求中属性的值。如果属性是 DateTime (不可为空),然后是 DefaultModelBinder将初始化值的默认值 ( 01/01/0001 ) 而不是 ModelState会产生错误。因此,该值可能会被保存,即使它不是您所期望的。

如果属性是DateTime? (可为空)和 [Required] ,那么如果恶意用户确实在请求中省略了该属性,则 ModelState会产生错误,因为请求中需要一个值,并且会返回 View ,因此不会保存无效数据。

另请参阅 Brad Wilson 的文章 Input Validation vs. Model Validation in ASP.NET MVC以及标题为“发布不足”问题的部分。

关于c# - 属性为 [Required] 且可为 null 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43688968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com