要注册新成员,我有一个名为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; }
}
答案 0 :(得分:0)
执行此操作的最佳方法是创建适合您情况的自定义视图模型。
另一个版本是告诉你的模型绑定器忽略这些字段(这也会跳过验证)。您可以使用Bind属性执行此操作:
[Bind(Exclude="WorkAddress")]
public ActionResult DoSomething(UserRegisterModel model)
{
//controller code here
}