Exclude Fields From Model Validation

saber picture saber · Apr 28, 2013 · Viewed 7.6k times · Source

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?

Answer

LukLed picture LukLed · Apr 28, 2013

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