仅当用户填写至少1个属性时,才强制列表中的单个元素

时间:2014-10-15 22:58:05

标签: asp.net-mvc-4 unobtrusive-validation

所以,我把这个ViewModel映射到我的View(只是一个例子):

ContactViewModel{
    public String Name {get; set;}
    public List<Friend> FriendList {get; set;}

    public class Friend(){
        public String Name {get; set;}
        public String Email {get; set}
        public String Gender {get; set;}
    }
}

这些是要求:

  1. 用户可以在朋友列表中填写0到N个项目。
  2. 一旦用户开始填写朋友信息(姓名,电子邮件,性别)中的第一个(第一个字段可以是三个中的任何一个)字段,所有其他字段将成为强制性字段。
  3. 是否有一种简单的方法可以在视图模型中使用属性验证来解决这些需求? (服务器端和客户端)。

    修改

    我不想使用像RequiredIf()那样的东西,因为我的代码看起来像这样:

    public class Friend(){
        public String Name {get; set;}
    
        [RequiredIf("Name", NotNull)]
        public String Email {get; set}
    
        [RequiredIf("Name", NotNull)]
        [RequiredIf("Email", NotNull)]
        public String Gender {get; set;}
    }
    

    因此,如果Friend有20个属性,则最后一个属性将具有19个RequiredIf属性验证器。最糟糕的是客户端验证不起作用,因为属性会相互覆盖。

0 个答案:

没有答案