我有这些课程:
Class Parent
{
[Required]
String Name ;
Child child ;
}
Class Child
{
[Required]
Child FirstName ;
[Required]
Child LastName ;
}
我有一个显示父实体字段的表单,包括Childs' s。使用我的配置,子项的FistName和LastName是必需的,如果留空,则导致验证失败。
如果孩子的FirstName和LastName都被提交为空白,我需要的是验证通行证。如果提交了FirstName或LastName,则另一个是必需的,验证应该失败。
我怎样才能做到这一点?
答案 0 :(得分:2)
只需将注释更改为:
[必需(AllowEmptyString = true)]
这将允许空字符串通过验证。如果需要,您可以在服务器上执行其他验证。
此链接应该有所帮助:
答案 1 :(得分:2)
我会在模型上实现自己的验证方法。你的模型最终会看起来像这样:
public class Child : IValidatableObject {
public string FirstName {get; set;}
public string LastName {get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
if ((string.IsNullOrEmpty(this.FirstName) && !string.IsNullOrEmpty(this.LastName)) || (!string.IsNullOrEmpty(this.FirstName) && string.IsNullOrEmpty(this.LastName))) {
yield return new ValidationResult("You must supply both first name and last name or neither of them");
}
}
}