Search code examples
c#asp.net-mvcmodel-validation

Exclude Fields From Model Validation


Let's say I have a following ViewModel :

    public class PersonViewModel
    {
        [Required]
        public String Email { get; set; }

        [Required]
        public String FirstName { get; set; }

        [Required]
        public String LastName { get; set; }
    }

This is a ViewModel not a original Entity, I use this model in two places, in the first one I want to validate all fields, but in another one I want to exclude Email field from model validation. Is there anyway to specify to exclude field(s) from validation?


Solution

  • You can use

    ModelState.Remove("Email");
    

    to remove entries in model state, that are related to hidden fields.

    The best solution is to divide view model into two:

    public class PersonViewModel
    {
        [Required]
        public String FirstName { get; set; }
    
        [Required]
        public String LastName { get; set; }
    }
    
    public class PersonWithEmailViewModel : PersonViewModel
    {
        [Required]
        public String Email { get; set; }
    }