2012-04-05 71 views
1

我不确定标题是否清晰。让我更好地解释它:验证注释模型列表

我有两个型号:

1个GuestResponse.cs:

public class GuestResponse 
    { 
     [Required(ErrorMessage="Please enter your name")] 
     public string Name { get; set; } 

     [Required(ErrorMessage = "Please enter your email address")] 
     [RegularExpression(".+\\@.+\\..+", ErrorMessage="Please enter a valid email address")] 
     public string Email { get; set; } 

     [Required(ErrorMessage = "Please enter your phone number")] 
     public string Phone { get; set; } 

     [Required(ErrorMessage = "Please especify wheter you will attend")] 
     public bool? WillAttend { get; set; } 
    } 

2- CompanyGuestResponse.cs:

public class CompanyGuestResponse 
    { 
     [Required(ErrorMessage = "Please enter your company name")] 
     public string Name { get; set; } 

     [Required(ErrorMessage = "Please enter your company email address")] 
     [RegularExpression(".+\\@.+\\..+", ErrorMessage = "Please enter a valid email address")] 
     public string Email { get; set; } 

     [Required(ErrorMessage = "Please enter your company phone number")] 
     public string Phone { get; set; } 

     public IList<GuestResponse> GuestResponses { get; set;} 
    } 

我也有一个强烈CompanyGuestResponse模型的视图,其中有一个表格,可让用户为属性GuestResponses提供输入。

我想只能在表格的填充行被正确验证(即,不要试图验证没有填充的行)并且至少有一行被正确填充的情况下才能提交表单。

我试图通过与没有成功ViewModel validation for a List描述创建自定义注释来做到这一点(MVC根本无视列表注释和验证在GuestResponse类注释):

[EnsureOneElementAttribute(ErrorMessage = "At least a person is required")] 
public IList<GuestResponse> GuestResponses { get; set;} 

结果:

http://postimage.org/image/b2jn7ta69/

回答

0

什么,我知道你是想验证每个域的模型本身,而不是,所以你可以做什么去除性能的[Required]属性, d在动作验证,如果任何字段都被填充了,如果这样再继续否则,添加一个错误,并且不与任何领域

等什么我告诉你在这种情况下降附注关联,并做了人工检查