在课堂上我有这个:
public class CustomerMvc
{
public int Id { get; set; }
[Required(ErrorMessage = "LastName mandatory.")]
public string LastName { get; set; }
[EmailValidation(ErrorMessage = "Email not valid.")]
public string Email { get; set; }
}
在另一堂课中,我有这个:
public class CartMvc
{
public CustomerMvc Customer { get; set; }
[Required(ErrorMessage = "VAT mandatory.")]
public int VatId { get; set; }
}
控制器中的Save
方法,接收模型类型CartMvc
。问题是,在这种情况下,我不想验证属性类型CustomerMvc
,而只需要VatId
。
在这种情况下,有没有办法绕过CustomerMvc
的验证?其他方式?
谢谢,
答案 0 :(得分:3)
您可以使用视图模型:
public class SaveCustomerMvcViewModel
{
public int Id { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
然后:
public class SaveCartMvcViewModel
{
public SaveCustomerMvcViewModel Customer { get; set; }
[Required(ErrorMessage = "VAT mandatory.")]
public int VatId { get; set; }
}
当然,您的保存控制器操作将采用适当的视图模型作为参数:
[HttpPost]
public ActionResult Save(SaveCartMvcViewModel model)
{
...
}
作为旁注,将[Required]
属性放在不可为空的整数属性(您的VatId
属性)上几乎没有任何意义,因为不可为空的整数将始终具有值。如果要验证用户是否确实输入了某个值,您最好在视图模型上使用可以为空的整数:
public class SaveCartMvcViewModel
{
public SaveCustomerMvcViewModel Customer { get; set; }
[Required(ErrorMessage = "VAT mandatory.")]
public int? VatId { get; set; }
}