¿Cómo funciona realmente DataAnnotations en MVC?

Esta es más una pregunta teórica.

Actualmente estoy examinando la validación de MVC 3 utilizando ComponentModel.DataAnnotations, y todo funciona de forma automática, especialmente en el lado del cliente.

De alguna manera, algo verifica esos atributos y genera javascript para la validación (o atributos html5, si se usa el modo discreto), y funciona.

Mi pregunta es: ¿qué genera el javascript del lado del cliente y cómo puedo acceder y modificarlo? Por ejemplo, quiero manejar los atributos de anotación de datos dados de manera un poco diferente, o manejar atributos personalizados (descubrí que puedo derivarlos de ValidationAttribute, pero tal vez por alguna razón no quiero).

¿Puede alguien explicarme lo que realmente sucede? (O los enlaces a buenas explicaciones también serían buenos, ya que solo he encontrado tutoriales para usar realmente anotaciones de datos)

EDIT: también con la derivación de ValidationAttribute, la validación del lado del cliente no funciona automáticamente. ¿Por qué

Respuestas a la pregunta(1)

Su respuesta a la pregunta