Search code examples
asp.netjavascriptcustom-validators

How do I hook up javascript to my CustomValidator control in .Net


I have created a CustomValidator control

public class MyValidator :CustomValidator, IScriptControl {}

and also created the equivalent client script. The server validation works fine, however how do I hook up my client script?

The rendered javascript looks like

var MyValidator1 = document.all ? document.all["MyValidator1"] : document.getElementById("MyValidator1");
MyValidator1.controltovalidate = "MyField";
MyValidator1.errormessage = "error";
MyValidator1.evaluationfunction = "MyValidatorEvaluateIsValid";

How do I override the generated javascript to set the value of evaluationfunction? E.g.

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";

Solution

  • I've answered this myself as the other answer didn't quite achieve exactly what I wanted. I ended up using.

    public class MyValidator : BaseValidator, IScriptControl  {
    
      protected override void AddAttributesToRender(HtmlTextWriter writer) {
        base.AddAttributesToRender(writer);
        Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "MyJavascriptFunction");
      }
    
    }
    

    Which will cause the control to generate:

    MyValidator1.evaluationfunction = "MyJavascriptFunction";