0

在课堂上我有这个:

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?另一种方式 ?

谢谢,

4

1 回答 1

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; }
}

当然,现在您的 Save 控制器操作将采用适当的视图模型作为参数:

[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; }
}
于 2013-10-20T13:14:26.793 回答