【发布时间】:2016-11-18 21:00:52
【问题描述】:
我有一个场景,我需要在不同的上下文中以不同的方式验证视图模型。例如,如果您要发布消息,则某些字段是必需的,但如果您只想保存草稿,则不需要这些字段。然而,草稿仍有必填字段。因此,我有需要根据您保存的场景进行验证的输入。
我在灵活的输入模型上使用 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;
}
...
【问题讨论】:
标签: asp.net-mvc validation asp.net-core-mvc data-annotations