2009-04-27 3 views
0

ich eine CustomValidator SteuerWie kann ich Javascript meiner CustomValidator Kontrolle in .Net hook up

public class MyValidator :CustomValidator, IScriptControl {} 

und erstellt auch die entsprechende Client-Skript erstellt haben. Die Servervalidierung funktioniert einwandfrei, aber wie kann ich mein Clientskript anschließen?

Das gerenderte Javascript sieht aus wie

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

Wie kann ich die generierten Javascript außer Kraft setzen den Wert von evaluationfunction zu setzen? Z.B.

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction"; 
+0

Ja. Sie können die aktualisierte Antwort sehen. – Kirtan

Antwort

1

ich das selbst beantwortet haben als die andere Antwort nicht ganz genau das erreichen, was ich wollte. Ich habe es benutzt.

public class MyValidator : BaseValidator, IScriptControl { 

    protected override void AddAttributesToRender(HtmlTextWriter writer) { 
    base.AddAttributesToRender(writer); 
    Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "MyJavascriptFunction"); 
    } 

} 

, die die Steuer erzeugen bewirkt:

MyValidator1.evaluationfunction = "MyJavascriptFunction"; 
+0

Ich versuchte dies, aber ASP.Net beschwerte das Attribut wurde bereits hinzugefügt. Irgendwelche Ideen? – Remotec

1

Sie können die ClientValidationFunction Eigenschaft der Basisklasse wie folgt festgelegt -

base.ClientValidationFunction = "MyCustomJavascriptFunction"; 

Also, es es so machen wird -

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction"; 

Sie es aus der Kontrolle tun auch durch Einstellen derselben Eigenschaft.

EDIT: Sie können

tun
document.getElementById("<%= ValidatorId %>").evaluationfunction = "MyCustomJavascriptFunction"; 
+0

Doing this fügt die Zeile MyValidator1.clientvalidationfunction = MycustomJacascriptFunction "; Gibt es eine Möglichkeit, MyValidator1.evaluationfunction zu setzen? –

1

Eigentlich viel einfacher ist, die ClientValidationFunction Eigenschaft des asp zu verwenden: CustomValidator wie unten. Stellen Sie sicher, dass Sie keine ControlToValidate-Eigenschaft angeben.

<asp:CustomValidator ClientValidationFunction="MyCustomJSFunction" Text="Required" ForeColor="Red"></asp:CustomValidator> 

function MyCustomJSFunction(validator, args) { 
    args.IsValid = my condition; 
} 
Verwandte Themen