簡體   English   中英

屬性是[必需]和可空的是什么意思?

[英]What does it mean for a property to be [Required] and nullable?

屬性是[Required]和可空的是什么意思? (例如下面)似乎如果它是[Required]它可能不是null (沒有值),並且如果它能夠為null則它可能不是[Required]

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

使屬性可為空並使用[Required]屬性標記的原因是為了防止欠發布攻擊。 它還允許您在視圖中顯示初始空值,而不是屬性的默認值。 這通常使用視圖模型中的值類型屬性來完成。

發布不足的攻擊是指惡意用戶修改請求以省略請求中屬性的值。 如果屬性是DateTime (不可為空),則DefaultModelBinder將初始化其默認值( 01/01/0001 ),並且不會生成ModelState錯誤。 結果,即使它不是您所期望的,也可以保存該值。

如果屬性是DateTime? (可空)和[Required] ,然后如果惡意用戶確實省略了請求中的屬性,那么將生成ModelState錯誤,因為請求中有一個值,並且將返回視圖,因此無效數據將不會得救

另請參閱Brad Wilson 在ASP.NET MVC中的文章輸入驗證與模型驗證以及標題為“欠發布”問題的部分

它可以為空,因此表單不會顯示像0001-01-01T00:00:00這樣沒有意義的初始值。

需要強制用戶輸入內容。

必需是視圖的數據注釋。 該視圖將要求它在接受表單帖子之前具有值。

值可以為空可與數據庫中允許的內容相關。 數據庫中的值可以為null,或者值可以保持為null。

它們是不同的方面。

它是客戶端驗證所required ,但對於數據庫映射是nullable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM