问题
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?
回答1:
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; }
}
回答2:
An ugly solution:
ModelState.Remove("Email");
Recommended solution:
Create another ViewModel. A VM is supposed to represent your view, so if your view has no Email field, make a suitable VM for it.
来源:https://stackoverflow.com/questions/16266988/exclude-fields-from-model-validation