Pis*_*ity 20 c# asp.net-mvc data-annotations
对于一个属性[Required]和可空的属性意味着什么?(下面的例子)似乎如果它[Required]不可能null(没有价值),如果它能够是null它不可能是[Required].
[Required]
public DateTime? OrderDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
小智 27
使属性可为空并且使用该[Required]属性标记的原因是为了防止欠发布攻击.它还允许您在视图中显示初始空值,而不是属性的默认值.这通常使用视图模型中的值类型属性来完成.
发布不足的攻击是指恶意用户修改请求以省略请求中属性的值.如果属性是DateTime(不可为空),则会DefaultModelBinder将值初始化为default(01/01/0001),并且不会ModelState生成错误.结果,即使它不是您所期望的,也可以保存该值.
如果属性是DateTime?(可空)[Required],然后如果恶意用户确实省略了请求中的属性,那么ModelState将生成错误,因为请求中有一个值,并且视图将被返回,因此无效数据将不会得救
另请参阅Brad Wilson 在ASP.NET MVC中的文章输入验证与模型验证以及标题为"欠发布"问题的部分.
必需是视图的数据注释。在接受表单发布之前,视图将要求它具有一个值。
该值可以为空与数据库中允许的内容有关。一个值在数据库中可能为空,或者该值可能被持久化为空。
它们是不同的方面。
| 归档时间: |
|
| 查看次数: |
6525 次 |
| 最近记录: |