J'utilise sans problèmes depuis pas mal de temps la validation dans des
formulaires (ascx).
Hors dans une application il y a un UC qui ne me renvoie pas de msg
d'erreurs (si je ne fais par exemple aucune saisie) en utilisant
RequiredFieldValidator alors que les mêmes champs sur d'autres
(formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je
reproduits le même problème, merci de votre aide.
hervé
------------------------
ASCX:
<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="_saisieLienInternet.ascx.vb"
Inherits="webAppliGen.test.saisieLienInternetPROV"
TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:ValidationSummary headerText="Il y a des erreurs sur la page :"
id="Validationsummary1" runat="server" />
<input type="submit" name="btnEnregistrer" id="btnEnregistrer"
onserverclick="btnEnregistrer_ServerClick" runat="server"
value="Soumettre la requête">
----------------------
code behind:
Namespace test
Public Class saisieLienInternetPROV
Inherits System.Web.UI.UserControl
Protected WithEvents btnEnregistrer As
System.Web.UI.HtmlControls.HtmlInputButton
Protected WithEvents vsForm As
System.Web.UI.WebControls.ValidationSummary
Protected WithEvents Validationsummary1 As
System.Web.UI.WebControls.ValidationSummary
Protected WithEvents nom999 As System.Web.UI.WebControls.TextBox
Protected WithEvents rfvnom999 As
System.Web.UI.WebControls.RequiredFieldValidator
...
Sub btnEnregistrer_ServerClick(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnEnregistrer.ServerClick
If Page.IsValid Then
Response.Write("valide")
Else
Response.Write("NON valide")
End If
End Sub
End Class
End Namespace
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zazar
Bonjour,
J'utilise sans problèmes depuis pas mal de temps la validation dans des formulaires (ascx). Hors dans une application il y a un UC qui ne me renvoie pas de msg d'erreurs (si je ne fais par exemple aucune saisie) en utilisant RequiredFieldValidator alors que les mêmes champs sur d'autres (formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je reproduits le même problème, merci de votre aide. hervé
(snip)
<input type="submit" name="btnEnregistrer" id="btnEnregistrer" onserverclick="btnEnregistrer_ServerClick" runat="server" value="Soumettre la requête">
Utilisez un asp:Button plutôt qu'un input.
(snip)
-- Zazar
Bonjour,
J'utilise sans problèmes depuis pas mal de temps la validation dans des
formulaires (ascx).
Hors dans une application il y a un UC qui ne me renvoie pas de msg
d'erreurs (si je ne fais par exemple aucune saisie) en utilisant
RequiredFieldValidator alors que les mêmes champs sur d'autres
(formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je
reproduits le même problème, merci de votre aide.
hervé
(snip)
<input type="submit" name="btnEnregistrer" id="btnEnregistrer"
onserverclick="btnEnregistrer_ServerClick" runat="server"
value="Soumettre la requête">
J'utilise sans problèmes depuis pas mal de temps la validation dans des formulaires (ascx). Hors dans une application il y a un UC qui ne me renvoie pas de msg d'erreurs (si je ne fais par exemple aucune saisie) en utilisant RequiredFieldValidator alors que les mêmes champs sur d'autres (formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je reproduits le même problème, merci de votre aide. hervé
(snip)
<input type="submit" name="btnEnregistrer" id="btnEnregistrer" onserverclick="btnEnregistrer_ServerClick" runat="server" value="Soumettre la requête">
Utilisez un asp:Button plutôt qu'un input.
(snip)
-- Zazar
herve
Zazar a écrit :
Bonjour,
J'utilise sans problèmes depuis pas mal de temps la validation dans des formulaires (ascx). Hors dans une application il y a un UC qui ne me renvoie pas de msg d'erreurs (si je ne fais par exemple aucune saisie) en utilisant RequiredFieldValidator alors que les mêmes champs sur d'autres (formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je reproduits le même problème, merci de votre aide. hervé
(snip)
<input type="submit" name="btnEnregistrer" id="btnEnregistrer" onserverclick="btnEnregistrer_ServerClick" runat="server" value="Soumettre la requête">
Utilisez un asp:Button plutôt qu'un input.
(snip)
-- Zazar
Bonjour, Celà ne change rien. PAr contre, je crois avoir compris d'ou cela vient. Le seul cas ou cela ne fonctionne pas, "proviendrait" du fait que mon ascx est inclus dans un autre ascx. Puisque tous les autres cas (pages aspx ou ascx dans une page aspx fonctionne).
J'utilise sans problèmes depuis pas mal de temps la validation dans des
formulaires (ascx).
Hors dans une application il y a un UC qui ne me renvoie pas de msg
d'erreurs (si je ne fais par exemple aucune saisie) en utilisant
RequiredFieldValidator alors que les mêmes champs sur d'autres
(formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je
reproduits le même problème, merci de votre aide.
hervé
(snip)
<input type="submit" name="btnEnregistrer" id="btnEnregistrer"
onserverclick="btnEnregistrer_ServerClick" runat="server"
value="Soumettre la requête">
Utilisez un asp:Button plutôt qu'un input.
(snip)
--
Zazar
Bonjour,
Celà ne change rien.
PAr contre, je crois avoir compris d'ou cela vient.
Le seul cas ou cela ne fonctionne pas, "proviendrait" du fait que mon
ascx est inclus dans un autre ascx. Puisque tous les autres cas (pages
aspx ou ascx dans une page aspx fonctionne).
J'utilise sans problèmes depuis pas mal de temps la validation dans des formulaires (ascx). Hors dans une application il y a un UC qui ne me renvoie pas de msg d'erreurs (si je ne fais par exemple aucune saisie) en utilisant RequiredFieldValidator alors que les mêmes champs sur d'autres (formulaires ascx ou sur une page aspx) fonctionnent correctement.
J'y ai passé la matinée, il doit y avoir un truc tout bête qui m'échappe!
Voici le composant simplifié que j'ai recrée ou je fais des tests et je reproduits le même problème, merci de votre aide. hervé
(snip)
<input type="submit" name="btnEnregistrer" id="btnEnregistrer" onserverclick="btnEnregistrer_ServerClick" runat="server" value="Soumettre la requête">
Utilisez un asp:Button plutôt qu'un input.
(snip)
-- Zazar
Bonjour, Celà ne change rien. PAr contre, je crois avoir compris d'ou cela vient. Le seul cas ou cela ne fonctionne pas, "proviendrait" du fait que mon ascx est inclus dans un autre ascx. Puisque tous les autres cas (pages aspx ou ascx dans une page aspx fonctionne).
PAr contre, je crois avoir compris d'ou cela vient. Le seul cas ou cela ne fonctionne pas, "proviendrait" du fait que mon ascx est inclus dans un autre ascx. Puisque tous les autres cas (pages aspx ou ascx dans une page aspx fonctionne).
Normalement, ça ne pose pas de problème. Vous chargez dynamiquement les contrôles ou bien la référence est faîte directement dans les .Aspx/.ascx ?
Le code correspondant à la validation est-il présent dans le rendu ?
Pouvez-vous poster des bouts de code minimaliste reproduisant l'erreur ?
-- Zazar
Bonjour,
PAr contre, je crois avoir compris d'ou cela vient.
Le seul cas ou cela ne fonctionne pas, "proviendrait" du fait que mon
ascx est inclus dans un autre ascx. Puisque tous les autres cas (pages
aspx ou ascx dans une page aspx fonctionne).
Normalement, ça ne pose pas de problème.
Vous chargez dynamiquement les contrôles ou bien la référence est faîte
directement dans les .Aspx/.ascx ?
PAr contre, je crois avoir compris d'ou cela vient. Le seul cas ou cela ne fonctionne pas, "proviendrait" du fait que mon ascx est inclus dans un autre ascx. Puisque tous les autres cas (pages aspx ou ascx dans une page aspx fonctionne).
Normalement, ça ne pose pas de problème. Vous chargez dynamiquement les contrôles ou bien la référence est faîte directement dans les .Aspx/.ascx ?
Le code correspondant à la validation est-il présent dans le rendu ?
Pouvez-vous poster des bouts de code minimaliste reproduisant l'erreur ?
-- Zazar
Zazar
> Je mets plutôt en fichier joints, pour un test plus rapide, et afin de ne pas oublier le petit truc qui bloque ... les ascx sont dans un sous-répertoire _ascx par rapport à l'aspx. Ce qui fonctionne : test-valid.aspx + saisieTous.ascx + _saisieTest.ascx Ce qui ne fonctionne pas: test-valid.aspx + saisies.ascx +
_saisieTest.ascx
Tout d'abord 2 remarques : 1) Ne préfixez pas vos fichiers concernant le web par _. 2) Essayez de fournir du code qui compile sans modification (là j'ai du retirer des réfèrences à des fichiers que je n'avais pas)
Sinon, vous avez 2 problèmes : 1) La validation ne se fait pas coté client 2) La validation ne se fait pas coté serveur
Le problème 1 est du au fait que vous avez mis la propriété clienttarget de votre page à downlevel : dans ce cas le code javascript n'est pas généré.
Le problème 2 est du au fait qu'au moment de la vérification de la validité de votre page, votre validator est caché (visible = false). En effet, votre contrôle est caché par défaut, et vous ne le rendez visible que lors du prerender. De plus, le viewstate étant désactivé, le rendre visible au moment du render ne le rend pas visible lors de la prochaine requête. Si la validation marche avec saisieTous.ascx , c'est que vous rendez le contrôle visible au moment du chargement de la page et donc avant la vérification de sa validité.
-- Zazar
> Je mets plutôt en fichier joints, pour un test plus rapide, et afin de
ne pas oublier le petit truc qui bloque ...
les ascx sont dans un sous-répertoire _ascx par rapport à l'aspx.
Ce qui fonctionne : test-valid.aspx + saisieTous.ascx + _saisieTest.ascx
Ce qui ne fonctionne pas: test-valid.aspx + saisies.ascx +
_saisieTest.ascx
Tout d'abord 2 remarques :
1) Ne préfixez pas vos fichiers concernant le web par _.
2) Essayez de fournir du code qui compile sans modification (là j'ai du
retirer des réfèrences à des fichiers que je n'avais pas)
Sinon, vous avez 2 problèmes :
1) La validation ne se fait pas coté client
2) La validation ne se fait pas coté serveur
Le problème 1 est du au fait que vous avez mis la propriété clienttarget de
votre page à downlevel : dans ce cas le code javascript n'est pas généré.
Le problème 2 est du au fait qu'au moment de la vérification de la validité
de votre page, votre validator est caché (visible = false). En effet, votre
contrôle est caché par défaut, et vous ne le rendez visible que lors du
prerender. De plus, le viewstate étant désactivé, le rendre visible au
moment du render ne le rend pas visible lors de la prochaine requête. Si la
validation marche avec saisieTous.ascx , c'est que vous rendez le contrôle
visible au moment du chargement de la page et donc avant la vérification de
sa validité.
> Je mets plutôt en fichier joints, pour un test plus rapide, et afin de ne pas oublier le petit truc qui bloque ... les ascx sont dans un sous-répertoire _ascx par rapport à l'aspx. Ce qui fonctionne : test-valid.aspx + saisieTous.ascx + _saisieTest.ascx Ce qui ne fonctionne pas: test-valid.aspx + saisies.ascx +
_saisieTest.ascx
Tout d'abord 2 remarques : 1) Ne préfixez pas vos fichiers concernant le web par _. 2) Essayez de fournir du code qui compile sans modification (là j'ai du retirer des réfèrences à des fichiers que je n'avais pas)
Sinon, vous avez 2 problèmes : 1) La validation ne se fait pas coté client 2) La validation ne se fait pas coté serveur
Le problème 1 est du au fait que vous avez mis la propriété clienttarget de votre page à downlevel : dans ce cas le code javascript n'est pas généré.
Le problème 2 est du au fait qu'au moment de la vérification de la validité de votre page, votre validator est caché (visible = false). En effet, votre contrôle est caché par défaut, et vous ne le rendez visible que lors du prerender. De plus, le viewstate étant désactivé, le rendre visible au moment du render ne le rend pas visible lors de la prochaine requête. Si la validation marche avec saisieTous.ascx , c'est que vous rendez le contrôle visible au moment du chargement de la page et donc avant la vérification de sa validité.
-- Zazar
herve
Zazar a écrit :
Je mets plutôt en fichier joints, pour un test plus rapide, et afin de ne pas oublier le petit truc qui bloque ... les ascx sont dans un sous-répertoire _ascx par rapport à l'aspx. Ce qui fonctionne : test-valid.aspx + saisieTous.ascx + _saisieTest.ascx Ce qui ne fonctionne pas: test-valid.aspx + saisies.ascx +
_saisieTest.ascx
Tout d'abord 2 remarques : 1) Ne préfixez pas vos fichiers concernant le web par _.
Est-ce qu'il y a une raison particulière car celà fait quelques temps que je préfixe des ascx sans souci particulier !
2) Essayez de fournir du code qui compile sans modification (là j'ai du retirer des réfèrences à des fichiers que je n'avais pas)
désolé oubli
Sinon, vous avez 2 problèmes : 1) La validation ne se fait pas coté client 2) La validation ne se fait pas coté serveur
Le problème 1 est du au fait que vous avez mis la propriété clienttarget de votre page à downlevel : dans ce cas le code javascript n'est pas généré.
Oui c'était pour faire fonctionner l'appli chez l'hébergeur (alors qu'elle fonctionne bien en mode local, "peut-être" du à un pb de sécurité avec le machine.config ... A résoudre ultérieurement ...
Le problème 2 est du au fait qu'au moment de la vérification de la validité de votre page, votre validator est caché (visible = false). En effet, votre contrôle est caché par défaut, et vous ne le rendez visible que lors du prerender. De plus, le viewstate étant désactivé, le rendre visible au moment du render ne le rend pas visible lors de la prochaine requête. Si la validation marche avec saisieTous.ascx , c'est que vous rendez le contrôle visible au moment du chargement de la page et donc avant la vérification de sa validité.
Voilà donc la petite différence :-(. En mettant le code dans le load, celà refonctionne. Merci Hervé PS: J'ai vraiment du mal à répartir correctement mon code dans l'init, le pre-render et le load. Ya souvent un truc qui cloche ...
Zazar a écrit :
Je mets plutôt en fichier joints, pour un test plus rapide, et afin de
ne pas oublier le petit truc qui bloque ...
les ascx sont dans un sous-répertoire _ascx par rapport à l'aspx.
Ce qui fonctionne : test-valid.aspx + saisieTous.ascx + _saisieTest.ascx
Ce qui ne fonctionne pas: test-valid.aspx + saisies.ascx +
_saisieTest.ascx
Tout d'abord 2 remarques :
1) Ne préfixez pas vos fichiers concernant le web par _.
Est-ce qu'il y a une raison particulière car celà fait quelques temps
que je préfixe des ascx sans souci particulier !
2) Essayez de fournir du code qui compile sans modification (là j'ai du
retirer des réfèrences à des fichiers que je n'avais pas)
désolé oubli
Sinon, vous avez 2 problèmes :
1) La validation ne se fait pas coté client
2) La validation ne se fait pas coté serveur
Le problème 1 est du au fait que vous avez mis la propriété clienttarget de
votre page à downlevel : dans ce cas le code javascript n'est pas généré.
Oui c'était pour faire fonctionner l'appli chez l'hébergeur (alors
qu'elle fonctionne bien en mode local, "peut-être" du à un pb de
sécurité avec le machine.config ... A résoudre ultérieurement ...
Le problème 2 est du au fait qu'au moment de la vérification de la validité
de votre page, votre validator est caché (visible = false). En effet, votre
contrôle est caché par défaut, et vous ne le rendez visible que lors du
prerender. De plus, le viewstate étant désactivé, le rendre visible au
moment du render ne le rend pas visible lors de la prochaine requête. Si la
validation marche avec saisieTous.ascx , c'est que vous rendez le contrôle
visible au moment du chargement de la page et donc avant la vérification de
sa validité.
Voilà donc la petite différence :-(.
En mettant le code dans le load, celà refonctionne.
Merci
Hervé
PS: J'ai vraiment du mal à répartir correctement mon code dans l'init,
le pre-render et le load. Ya souvent un truc qui cloche ...
Je mets plutôt en fichier joints, pour un test plus rapide, et afin de ne pas oublier le petit truc qui bloque ... les ascx sont dans un sous-répertoire _ascx par rapport à l'aspx. Ce qui fonctionne : test-valid.aspx + saisieTous.ascx + _saisieTest.ascx Ce qui ne fonctionne pas: test-valid.aspx + saisies.ascx +
_saisieTest.ascx
Tout d'abord 2 remarques : 1) Ne préfixez pas vos fichiers concernant le web par _.
Est-ce qu'il y a une raison particulière car celà fait quelques temps que je préfixe des ascx sans souci particulier !
2) Essayez de fournir du code qui compile sans modification (là j'ai du retirer des réfèrences à des fichiers que je n'avais pas)
désolé oubli
Sinon, vous avez 2 problèmes : 1) La validation ne se fait pas coté client 2) La validation ne se fait pas coté serveur
Le problème 1 est du au fait que vous avez mis la propriété clienttarget de votre page à downlevel : dans ce cas le code javascript n'est pas généré.
Oui c'était pour faire fonctionner l'appli chez l'hébergeur (alors qu'elle fonctionne bien en mode local, "peut-être" du à un pb de sécurité avec le machine.config ... A résoudre ultérieurement ...
Le problème 2 est du au fait qu'au moment de la vérification de la validité de votre page, votre validator est caché (visible = false). En effet, votre contrôle est caché par défaut, et vous ne le rendez visible que lors du prerender. De plus, le viewstate étant désactivé, le rendre visible au moment du render ne le rend pas visible lors de la prochaine requête. Si la validation marche avec saisieTous.ascx , c'est que vous rendez le contrôle visible au moment du chargement de la page et donc avant la vérification de sa validité.
Voilà donc la petite différence :-(. En mettant le code dans le load, celà refonctionne. Merci Hervé PS: J'ai vraiment du mal à répartir correctement mon code dans l'init, le pre-render et le load. Ya souvent un truc qui cloche ...
Zazar
Bonsoir,
> 1) Ne préfixez pas vos fichiers concernant le web par _. Est-ce qu'il y a une raison particulière car celà fait quelques temps que je préfixe des ascx sans souci particulier !
C'est simplement que VS.NET ne "voit pas" ces fichiers quand on navigue parmi les applications web.
PS: J'ai vraiment du mal à répartir correctement mon code dans l'init, le pre-render et le load. Ya souvent un truc qui cloche ...
Oui c'est assez difficile à faire. J'avoue avoir mis du temps à y arriver aussi, mais je n'ai toujours pas trouvé de règle générale qui empêcherait de réflèchir à chaque nouvelle situation. Cependant, si vous comprenez le cycle de vie d'une page asp.net, et tout ce qui se passe entre 2 requêtes, vous arriverez sans trop de problèmes à pouvoir répartir votre code de manière focntionnelle. Aprés pour que ce soit propre et efficace, l'habitude aidera.
-- Zazar
Bonsoir,
> 1) Ne préfixez pas vos fichiers concernant le web par _.
Est-ce qu'il y a une raison particulière car celà fait quelques temps
que je préfixe des ascx sans souci particulier !
C'est simplement que VS.NET ne "voit pas" ces fichiers quand on navigue
parmi les applications web.
PS: J'ai vraiment du mal à répartir correctement mon code dans l'init,
le pre-render et le load. Ya souvent un truc qui cloche ...
Oui c'est assez difficile à faire. J'avoue avoir mis du temps à y arriver
aussi, mais je n'ai toujours pas trouvé de règle générale qui empêcherait de
réflèchir à chaque nouvelle situation. Cependant, si vous comprenez le cycle
de vie d'une page asp.net, et tout ce qui se passe entre 2 requêtes, vous
arriverez sans trop de problèmes à pouvoir répartir votre code de manière
focntionnelle. Aprés pour que ce soit propre et efficace, l'habitude aidera.
> 1) Ne préfixez pas vos fichiers concernant le web par _. Est-ce qu'il y a une raison particulière car celà fait quelques temps que je préfixe des ascx sans souci particulier !
C'est simplement que VS.NET ne "voit pas" ces fichiers quand on navigue parmi les applications web.
PS: J'ai vraiment du mal à répartir correctement mon code dans l'init, le pre-render et le load. Ya souvent un truc qui cloche ...
Oui c'est assez difficile à faire. J'avoue avoir mis du temps à y arriver aussi, mais je n'ai toujours pas trouvé de règle générale qui empêcherait de réflèchir à chaque nouvelle situation. Cependant, si vous comprenez le cycle de vie d'une page asp.net, et tout ce qui se passe entre 2 requêtes, vous arriverez sans trop de problèmes à pouvoir répartir votre code de manière focntionnelle. Aprés pour que ce soit propre et efficace, l'habitude aidera.