排除某些儿童成员获得验证

时间:2012-06-05 08:57:28

标签: asp.net-mvc validation

要注册新成员,我有一个名为UserRegisterModel的ViewModel。此模型从用户获取两种地址,HomeAddress 必需,而WorkAddress 可选。要获取地址,我使用名为ContactEntryModel的复杂类型。我使用[Required]属性修饰了我的ContactEntryModel成员,这会导致家庭和工作地址自动验证。

我正在搜索将WorkAddress标记为忽略排除的解决方案,并告诉验证引擎停止验证WorkAddress子属性,即使它们使用验证进行修饰属性。

public class UserRegisterModel
    {
        [StringLength(50), Required]
        public string FirstName { get; set; }
        [StringLength(50), Required]
        public string LastName { get; set; }
        [StringLength(10), Required]
        public string IdCardNo { get; set; }
        [StringLength(100), Email]
        public string Email { get; set; }

        public ContactEntryModel HomeContact { get; set; }  //Required

        public ContactEntryModel WorkContact { get; set; }  //Optional
     }


   public class ContactEntryModel
    {
        [MaxLength(4), Required]
        public string TelPrefix { get; set; }
        [MaxLength(10), Required]
        public string Tel { get; set; }
        [MaxLength(50), Required]
        public string Province { get; set; }
        [MaxLength(50), Required]
        public string City { get; set; }
        [MaxLength(300), Required]
        public string AddressLine { get; set; }
        [MaxLength(20)]
        public string PostalCode { get; set; }
    }

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是创建适合您情况的自定义视图模型。

另一个版本是告诉你的模型绑定器忽略这些字段(这也会跳过验证)。您可以使用Bind属性执行此操作:

[Bind(Exclude="WorkAddress")]
public ActionResult DoSomething(UserRegisterModel model)
{
    //controller code here
}