我正在开发一个 MVC 应用程序,我编写的一些模型代码的展开有点像这样:
public class SomeModel
{
public int? CodeA { get; set; }
public int? CodeB { get; set; }
[RequiredIf("CodeA", 3, ErrorMessage = "(required for [Something]!)")]
[RequiredIf("CodeB", 99, ErrorMessage = "(required for [Other]!)")]
public string Foo { get; set; }
// SNIP: Unimportant details
}
注意:RequiredIf()
我正在使用的实现可以在这里找到。
我用两个RequiredIf() 属性修饰了属性Foo,用户可以在某些情况下对其进行编辑。有两种不同的情况需要填写。在所有其他情况下,前端将解析用户的输入并在“幕后”为他们填充。
问题:如果只满足一种情况(例如 CodeA = 3,CodeB = 4),并且用户未能输入任何内容从而导致否定验证,那么模型是否仍会被标记为 Invalid 并为其记录 ErrorMessage ?或者,由于满足 Code B 条件,如果 CodeA 处于需要(而不是输入)的状态,是否会覆盖执行的验证?
另一种提问方式:验证是附加的,还是一次只有一个验证的结果有隐含限制?