0
我有一個場景,我需要在不同的上下文中以不同的方式驗證視圖模型。例如,如果您打算髮布消息,但是如果您只想保存草稿,則不需要某些字段。然而,草稿仍然有必要的字段。因此,我輸入的內容需要根據您保存的場景進行驗證。使用IValidatableObject MVC中的條件驗證
我在柔性輸入模型上使用IValidatableObject,因爲靜態屬性似乎不允許這樣做。我發現可以使用ValidationContext.Items屬性將數據傳遞給Validate方法。我可以在驗證中看到它,但是在通過MVC的源代碼搜索之後,看起來好像沒有辦法在您嘗試更新TryUpdate之前設置您正在驗證的場景。
我錯過了什麼,或者有沒有另一種方法,我沒有看到?
public IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> Validate(ValidationContext validationContext)
{
ValidationLevel validationLevel;
object validationLevelObject;
if (validationContext.Items.TryGetValue("$" + nameof(ValidationLevel), out validationLevelObject))
{
validationLevel = (ValidationLevel)validationLevelObject;
}
else
{
validationLevel = ValidationLevel.Full;
}
...