3

要注册新成员,我有一个名为UserRegisterModel. 这个模型从用户那里得到两种地址,HomeAddress一个是必需的,WorkAddress一个是可选的。为了获取地址,我使用了一个名为ContactEntryModel. 我用[Required]属性装饰了我的 ContactEntryModel 成员,这会导致家庭和工作地址都得到自动验证。

我正在寻找将 WorkAddress 标记为IgnoredExcluded的解决方案,并通过它告诉验证引擎停止验证 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; }
    }
4

1 回答 1

0

最好的方法是创建一个自定义视图模型,根据您的情况进行适当装饰。

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

[Bind(Exclude="WorkAddress")]
public ActionResult DoSomething(UserRegisterModel model)
{
    //controller code here
}
于 2012-06-05T09:16:19.073 回答