【发布时间】:2012-06-09 07:04:46
【问题描述】:
要注册新成员,我有一个名为 UserRegisterModel 的 ViewModel。这个模型从用户那里得到两种地址,他的HomeAddress是必需的和他的WorkAddress是可选的。为了获取地址,我使用了一个名为 ContactEntryModel 的复杂类型。我用[Required] 属性装饰了我的ContactEntryModel 成员,这会导致家庭和工作地址都得到自动验证。
我正在寻找将 WorkAddress 标记为 Ignored 或 Excluded 的解决方案,并通过它告诉验证引擎停止验证 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; }
}
【问题讨论】:
-
你有没有得到这个答案?
-
我最终创建了两个不同的 ContactEntryModel,一个用于必需地址,另一个用于可选地址。为了保持这两个模型兼容,我使用了一个基类,它包含所有成员,但没有任何验证属性。