The other day I came across a tidbit of information that once stumbled upon, I realized I had known this long ago. I wish I had remembered it before I had to debug code for an hour, so I thought in the interest of prosperity, I would document this tidbit right now.
In our web solution, we make use of user controls rather extensively. My client had the need for one of my common controls to be validated, but only in one instance of its implementation. I thought, "Hey! This is the perfect time to use a custom validator." I dropped on my custom validator, set the ControlToValidate to my user control, added the OnServerValidate event and voila. Except for one problem...I got an error when I tried to open the page. Apparently, a user control is not allowed to be the target of a custom validator. So what to do? As has happened in the past, and as I am sure will happen again in the future, I thought of a work around :)
I decided to set the target control to a text box I had on the same form. Oops. This text box did not require an entry. My custom validator only fired when there was text in the textbox. It took me a couple of seconds to recognize my mistake, as I tried to figure out why my validator worked sporadically.
Long story short (too late???), if you want to use a custom validator, the validation event will only fire if the control you are validating has an entry.