the model specify which validator will be used, and then the validator  pass the model to validation attribute and gather error message from the attributes.