2013-06-25 56 views
3

我有物业MVC3自定义验证

[Display(Name = "Phone")] 
    public List<Phone> PhoneNumbers { get; set; } 

我想验证列表应该是一个模型大于0

推荐我的代码。

/// <summary> 
/// Atleast one phone number is required 
/// </summary> 
public sealed class DemographicPhoneNumberRequiredCheck : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     ??????? 
    } 
} 

谢谢。

回答

3

你可以使用CountAny

public override bool IsValid(object value) 
    { 
     var PhoneNumbers = value as List<Phone>; 
     if (PhoneNumbers != null) 
     { 
      return PhoneNumbers.Count() > 0; 
     } 

     return false; 
    } 

或者:

public override bool IsValid(object value) 
    { 
     var PhoneNumbers = value as List<Phone>; 
     if (PhoneNumbers != null) 
     { 
      return PhoneNumbers.Any(); 
     } 
    } 
+1

打我给它。很好,很简单:) –

+0

我不知道他如何直接在验证属性中获取PhoneNumbers。你有没有想错过吗? –

+0

除非我错过了一些非常简单的东西,否则不会编译。 'PhoneNumbers'在属性实现中不可用。 – Andrei

1

其实你在你的方法有值:

public override bool IsValid(object value) 
{ 
    var phoneNumbers = value as List<Phone>; 
    if(phoneNumbers != null) 
    { 
     // perform the validation 
    } 
}