2009-04-27 9 views
0

J'ai créé un contrôle CustomValidatorComment puis-je brancher javascript pour mon contrôle CustomValidator en .Net

public class MyValidator :CustomValidator, IScriptControl {} 

et a également créé le script client équivalent. La validation du serveur fonctionne bien, mais comment connecter mon script client?

Le javascript rendu ressemble à

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

Comment remplacer le javascript généré pour définir la valeur de evaluationfunction? Par exemple.

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction"; 
+0

Oui. Vous pouvez voir la réponse mise à jour. – Kirtan

Répondre

1

j'ai répondu moi-même que l'autre réponse n'a pas atteint tout à fait exactement ce que je voulais. J'ai fini par utiliser.

public class MyValidator : BaseValidator, IScriptControl { 

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

} 

qui provoquera le contrôle de générer:

MyValidator1.evaluationfunction = "MyJavascriptFunction"; 
+0

J'ai essayé mais ASP.Net s'est plaint que l'attribut a déjà été ajouté. – Remotec

1

Vous pouvez définir la propriété ClientValidationFunction de la classe de base comme celui-ci -

base.ClientValidationFunction = "MyCustomJavascriptFunction"; 

Ainsi, il sera rendu comme ça -

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction"; 

Vous pouvez le faire à partir du contrôle également en définissant la même propriété.

EDIT: Vous pouvez faire

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

Cela ajoute la ligne MyValidator1.clientvalidationfunction = MycustomJavascriptFunction "; Y at-il un moyen de définir MyValidator1.evaluationfunction? –

1

En fait, beaucoup plus facile est d'utiliser la propriété ClientValidationFunction du asp: CustomValidator comme ci-dessous. Assurez-vous de ne PAS spécifier une propriété ControlToValidate.

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

function MyCustomJSFunction(validator, args) { 
    args.IsValid = my condition; 
} 
Questions connexes