I clearly prefer Data Annotations because ...
- all validation rules can be configured in one place in code (within the model metadata class) and don't need to be repeated anywhere else.
- there is excellent support for client side validation (again – without repetition of validation rules!) when using Data Annotation attributes.
- Data Annotation attributes can be tested to ensure they're there.
- there are nice additional validation attributes created by the community (e.g. Data Annotations Extensions).