问题
I would like to validate list of models one by one programmatically.
I tried TryValidateModel but looks like it aggregates validation errors, so that when I iterate through the list of 10 models, if 5th model is not valid, for models 6-10 TryValidateModel returns false.
回答1:
You can use controller methods ValidateModel
or TryValidateModel
.
ValidateModel
- throws exception if model is not valid.
TryValidateModel
- returns bool which indicates if model is valid.
From MSDN:
When a model is being validated, all validators for all properties are run if at least one form input is bound to a model property. The TryValidateModel is like the ValidateModel method except that the TryValidateModel method does not throw an InvalidOperationExceptionexception if the model validation fails.
If you validate list of models one by one, you probably would like to reset ModelState for each iteration by calling ModelState.Clear()
.
来源:https://stackoverflow.com/questions/19994960/validate-list-of-models-programmatically-in-asp-net-mvc