C# MVC3自定义验证

C# MVC3自定义验证,c#,.net,asp.net-mvc,asp.net-mvc-3,C#,.net,Asp.net Mvc,Asp.net Mvc 3,我有一个有财产的模型 [Display(Name = "Phone")] public List<Phone> PhoneNumbers { get; set; } [Display(Name=“Phone”)] 公共列表电话号码{get;set;} 我想验证列表是否应大于0 告诉我密码 /// <summary> /// Atleast one phone number is required /// </summary> public

我有一个有财产的模型

    [Display(Name = "Phone")]
    public List<Phone> PhoneNumbers { get; set; }
[Display(Name=“Phone”)]
公共列表电话号码{get;set;}
我想验证列表是否应大于0

告诉我密码

/// <summary>
/// Atleast one phone number is required
/// </summary>
public sealed class DemographicPhoneNumberRequiredCheck : ValidationAttribute
{
    public override bool IsValid(object value)
    {
       ???????
    }
}
//
///至少需要一个电话号码
/// 
公共密封类人口统计PhoneNumber Required检查:ValidationAttribute
{
公共覆盖布尔值有效(对象值)
{
???????
}
}

谢谢。

您可以使用
Count
Any

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

       return false;
    }
public override bool有效(对象值)
{
var PhoneNumbers=列表中的值;
if(电话号码!=null)
{
返回PhoneNumber.Count()>0;
}
返回false;
}
或:

public override bool有效(对象值)
{
var PhoneNumbers=列表中的值;
if(电话号码!=null)
{
返回phonenumber.Any();
}
}

实际上,您的方法中有值:

public override bool IsValid(object value)
{
    var phoneNumbers = value as List<Phone>;
    if(phoneNumbers != null) 
    {
        // perform the validation
    }
}
public override bool有效(对象值)
{
var phoneNumbers=列表中的值;
if(电话号码!=null)
{
//执行验证
}
}

比我快。很好,很简单:)我不知道他怎么能直接在验证属性中获取电话号码。你没有错过一些吗?除非我错过了一些非常简单的东西,否则这是不会编译的<代码>电话号码在属性实现中不可用。只需将对象“值”强制转换为列表
public override bool IsValid(object value)
{
    var phoneNumbers = value as List<Phone>;
    if(phoneNumbers != null) 
    {
        // perform the validation
    }
}