|
Publicité | ||||||||||||||||||||||
|
|
#1 |
![]() Inscription: juin 2002
Localisation: Namur
Âge: 30
Messages: 902
|
Bonjour à tous,
Je suis en train d'essayer d'implémenter un contrôle de validation personnalisé. J'aimerais que ce contrôle effectue une validation côté client quand cela est possible. Malheureusement, je coince sur un problème pour lequel je n'ai trouvé quasi aucune information (même pas sur MSDN). Lorsque j'arrive sur ma page, le contrôle déclenche une erreur JavaScript signalant que Code :
ValidatorHookupControlID is not defined !
Quelqu'un a-t-il une piste ? Merci.
__________________
Si ton problème a une solution, rien ne sert de t'inquiéter.. Si il n'en a pas, t'inquiéter ne sert à rien Ma Page |
|
00
|
|
|
#2 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
tu as un controle de validation sur ta page ?
si non, la ressource js contenant le framework de validation client n'est peut-etre pas chargée que renvoit Code :
alert(typeof(Page_Validators)); ton validator personnalisé implémente-t-il IValidator (ou hérite de BaseValidator) ?
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#3 | |
![]() Inscription: juin 2002
Localisation: Namur
Âge: 30
Messages: 902
|
Citation:
Cependant, alert(typeof(Page_Validators)), placé en StartupScript me renvoie bien undefined
__________________
Si ton problème a une solution, rien ne sert de t'inquiéter.. Si il n'en a pas, t'inquiéter ne sert à rien Ma Page |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
si tu implémentes IValidator, il faut que tu fasses savoir à la page que tu es un validator en t'enregistrant dans la collection de validator :
Code :
Page.Validators.Add(this); Ceci est fait automatiquement en dérivant de BaseValidator
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#5 |
![]() Inscription: juin 2002
Localisation: Namur
Âge: 30
Messages: 902
|
Arf... J'y ai cru pendant un instant... car j'avais en effet oublier d'ajouter mon contrôle comme contrôle de validation...
Mais cependant l'erreur subsiste... ValidatorHookupControlID is not defined
__________________
Si ton problème a une solution, rien ne sert de t'inquiéter.. Si il n'en a pas, t'inquiéter ne sert à rien Ma Page |
|
00
|
|
|
#6 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
si tu utilises firefox et que tu disposes d'un outil comme firebird, tu pourrais savoir si le fichier contenant toutes les fonctions du framework client de validation est présent.
Tu as ca ? Comment ca, on pourrait vérifier si ta page est reconnue comme ayant des validateurs. Ensuite, tu peux essayer de boucler depuis ta page aspx, genre, dans le OnPreRender, sur la collection de validator, histoire de vérifier qu'il trouve bien le tien Code :
foreach (BaseValidator validator in Page.Validators) { }
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#7 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
ah oui, il manque un truc.
Si tu n'hérites pas de BaseValidator, il faut inclure le js à la main je crois. Un ptit coup de reflector Et on a un truc du genre : Code :
if (!this.Page.IsPartialRenderingSupported) { if (!this.Page.ClientScript.IsClientScriptBlockRegistered(typeof(BaseValidator), "ValidatorIncludeScript")) { this.Page.ClientScript.RegisterClientScriptResource(typeof(BaseValidator), "WebUIValidation.js"); this.Page.ClientScript.RegisterStartupScript(typeof(BaseValidator), "ValidatorIncludeScript", "\r\n<script type=\"text/javascript\">\r\n<!--\r\nvar Page_ValidationActive = false;\r\nif (typeof(ValidatorOnLoad) == \"function\") {\r\n ValidatorOnLoad();\r\n}\r\n\r\nfunction ValidatorOnSubmit() {\r\n if (Page_ValidationActive) {\r\n return ValidatorCommonOnSubmit();\r\n }\r\n else {\r\n return true;\r\n }\r\n}\r\n// -->\r\n</script>\r\n "); this.Page.ClientScript.RegisterOnSubmitStatement(typeof(BaseValidator), "ValidatorOnSubmit", "if (typeof(ValidatorOnSubmit) == \"function\" && ValidatorOnSubmit() == false) return false;"); } } else { ValidatorCompatibilityHelper.RegisterClientScriptResource(this, typeof(BaseValidator), "WebUIValidation.js"); ValidatorCompatibilityHelper.RegisterStartupScript(this, typeof(BaseValidator), "ValidatorIncludeScript", "\r\n<script type=\"text/javascript\">\r\n<!--\r\nvar Page_ValidationActive = false;\r\nif (typeof(ValidatorOnLoad) == \"function\") {\r\n ValidatorOnLoad();\r\n}\r\n\r\nfunction ValidatorOnSubmit() {\r\n if (Page_ValidationActive) {\r\n return ValidatorCommonOnSubmit();\r\n }\r\n else {\r\n return true;\r\n }\r\n}\r\n// -->\r\n</script>\r\n ", false); ValidatorCompatibilityHelper.RegisterOnSubmitStatement(this, typeof(BaseValidator), "ValidatorOnSubmit", "if (typeof(ValidatorOnSubmit) == \"function\" && ValidatorOnSubmit() == false) return false;"); }
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#8 |
![]() Inscription: juin 2002
Localisation: Namur
Âge: 30
Messages: 902
|
Bon, le problème vient apparemment bien du fait que la page ne charge pas les scripts de validation client.
Par contre pour la boucle dans les contrôles de validation, mon contrôle est bien repris dans la collection.... Je suis sur que ça doit être une bêtise mais ça m'énerve !! ![]() ![]() Merci pour ton aide en tout cas
__________________
Si ton problème a une solution, rien ne sert de t'inquiéter.. Si il n'en a pas, t'inquiéter ne sert à rien Ma Page |
|
00
|
|
|
#9 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
comme on a posté en meme temps, je ne sais pas si tu as vu ma réponse
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#11 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
comme ca, ca suffit :
Code :
protected override void OnPreRender(EventArgs e) { if (!Page.ClientScript.IsClientScriptBlockRegistered(typeof(BaseValidator), "ValidatorIncludeScript")) { Page.ClientScript.RegisterClientScriptResource(typeof(BaseValidator), "WebUIValidation.js"); Page.ClientScript.RegisterStartupScript(typeof(BaseValidator), "ValidatorIncludeScript", "\r\n<script type=\"text/javascript\">\r\n<!--\r\nvar Page_ValidationActive = false;\r\nif (typeof(ValidatorOnLoad) == \"function\") {\r\n ValidatorOnLoad();\r\n}\r\n\r\nfunction ValidatorOnSubmit() {\r\n if (Page_ValidationActive) {\r\n return ValidatorCommonOnSubmit();\r\n }\r\n else {\r\n return true;\r\n }\r\n}\r\n// -->\r\n</script>\r\n "); Page.ClientScript.RegisterOnSubmitStatement(typeof(BaseValidator), "ValidatorOnSubmit", "if (typeof(ValidatorOnSubmit) == \"function\" && ValidatorOnSubmit() == false) return false;"); } base.OnPreRender(e); }
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#12 |
![]() Inscription: juin 2002
Localisation: Namur
Âge: 30
Messages: 902
|
Effectivement, cela ne génère plus d'erreur...
Malheureusement cela ne fonctionne quand même pas mais je pense que c'est du à l'architecture du contrôle qui est en fait un compositeControl. J'y ai dès lors intégré un CustomValidator pour lequel j'intègre la vérification que je souhaite effectuer côté client. Là où ça coince : la validation s'effectue correctement mais le postback n'est pas annulé en cas de validation client échouée. Je positionne pourtant bien le flag IsValid à false... Merci pour ton aide en tout cas...
__________________
Si ton problème a une solution, rien ne sert de t'inquiéter.. Si il n'en a pas, t'inquiéter ne sert à rien Ma Page |
|
00
|
|
|
#13 |
![]() ![]() Inscription: octobre 2003
Messages: 6 270
|
si t'as un projet minimal qui reproduit le problème, je veux bien jeter un coup d'oeil
__________________
Nouveau : MVVM Light toolkit Silverlight Ajax : Comparaison méthodes AJAX ; Navigation et bookmark Silverlight : Silverlight + php, mysql et webservices nuSoap ASP.NET (C#) : Cycle de vie ; Validators ; C++/CLI : Intéropérabilité ; Winforms ; Monde du C++/CLI ; App.config Mon blog (ASP.NET, C++/CLI) |
|
00
|
|
|
#14 |
![]() Inscription: juin 2002
Localisation: Namur
Âge: 30
Messages: 902
|
Merci pour ton aide Nico...
En tentant de construire un petit projet pour reproduire le problème, je suis tombé sur la source du problème. En fait le bouton qui provoquait le submit n'était pas tout à fait d'origine. En fait, le bouton en question se désactive via javascript avant de provoquer manuellement un postback (via GetPostBackReference).. ce qui apparemment ne vérifie pas la validité de la page avant de provoquer le postback. Temporairement, j'ai désactivé cette fonctionnalité et cela fonctionne... je verrai par après si je sais mettre en place une solution similaire. Merci encore pour t'être penché sur le sujet.
__________________
Si ton problème a une solution, rien ne sert de t'inquiéter.. Si il n'en a pas, t'inquiéter ne sert à rien Ma Page |
|
00
|