When you use the Validation controls with ASP.NET the code runs on both the client and the server (it seems not many people know this). This means that if someone uses a tool(such as fiddler) to bypass your client side validation, the validation still runs on the server.
The golden rule is:
Validation on the client for convenience only.
You could further improve the user experience on the client e.g. using jQuery validation plugin but dont forget that you still need to validate on the server.
For me, the ASP.NET validation controls are still a good choice because of this. And if you use an UpdatePanel (Ajax?) the server validation can be quite complex and still provide a good user experience - at the cost of a server roundtrip of course.