2013-06-25 80 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 
    } 
}