Disabled validators losing content on postback
===

**Summary:**  
Disabled ASP.NET validators are losing their `InnerHTML` content when posted-back to the server, and then when enabled (locally via JavaScript) show the `ErrorMessage` rather than original `InnerHTML` when fired.

**More Details:**  
I deal with some complex forms that require lots of individual controls to be visible/invisible, and their validators to be enabled/disabled, depending on the selection of other controls.  

All the validators contain an single "asterisk" image, with the error message shown via the central `asp:ValidatorSummary` object. For instance (formatted for viewing here, normally there is no whitespace)...

    <asp:RequiredFieldValidator runat="server" ID="valName" 
      ControlToValidate="txtName" ErrorMessage="Enter a name">
        <img runat="server" src="~/images/error.gif" />
    </asp:RequiredFieldValidator>

Rather than use `asp:CustomValidator` on every single validator (which requires local JavaScript and server-side handlers for each), I simply set `.enabled = false` on normal validators as part of the event handler for the "parent" control.  (The status of the controls is also set on the server-side on the initial page load, as well as subsequent post-back page loads.)

    function showName(show){
      document.getElementById("txtName").style.display = (show ? "" : "none");
      document.getElementById("valName").enabled = show;
    }

The problem lies in the sequence of events where a validator is disabled, the form is posted-back... then a control is changed (via user interation) and the validator is enabled.  If the validator now fails (on an attempted post-back) the `<img` code has gone, so instead it displays the `ErrorMessage` text where the image should be.

The `InnerHTML` remains as long as the validator stays enabled.

Other than dynamically adding the image to each validator on every single page load (which I *really* don't want to do), or converting them all to `CustomValidator`s (which again I *really* don't want to do), does anybody know any way around this?  Is this a known bug (because I can't find anything obvious)?

I am using ASP.NET 2.0 under Visual Studio 2010 - unfortunately, not in a position at the moment to upgrade to a higher version of ASP.NET.
