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;
}
...