[ASP.NET] UserControl

Bonjour !

Voilà, j’ai fait un userControl qui me sert d’entete pour les pages de mon site. Cependant quand je l’appelle ou plutôt que je veux l’appeler, il m’indique qu’il ne supporte pas les urls absolues mais seulement les chemins virtuels.

Ce qui fait que je ne peux pas appeler mon usercontrol (header.ascx) depuis n’importe où ?

Comment fait-on pour pouvoir accéder à un usercontrol depuis nimporte où ???

Je me demande si je n’ai finalement pas fait fausse rute (pas deçà chez nous ) route en faisant un usercontrol en guise d’entête pour mes pages web. En effet un article recommande plutôt de faire des servers controls à la place des UserControls pour ce genre d’utilisation…

Non non, un user control, c’est très bien. Il y a un snobisme du custom control, mais il faut reconnaitre que pour la maintenance du site, on ne fait pas plus simple qu’un user control.
L’astuce est d’utiliser des chemins relatifs à la racine de l’application, comme ça: “~/usercontrols/header.ascx“

Merci Beaucoup Boudin !!

Par ailleurs j’ai un autre souci. Dans mon userControl header.ascx, il y a un

.

Et quand je l’inclus dans une page aspx, qui contient un autre ,
Il  me dit qu’il y a une erreur, qu’on ne peut pas avoir une page avec 2 forms runat=“server”.

Je ne vois pas trop comment contourner le problème…

Ah bah oui mais tu croises les faisceaux, là. C’est mal.
Jamais, jamais de formulaire dans un User Control. Le seul formulaire runat=server doit être dans la page.
Pour soumettre vers une autre page, tu peux choper l’événement côté serveur (clic de bouton ou quoi que ce soit) et faire Server.Transfer. Ca doit être assez bien documenté sous MSDN…

[quote]Jamais, jamais de formulaire dans un User Control.[/quote]Tu veux dire jamais de form runat=“server” ?? Mais je peux mettre un form et je récupère (je vais voir comment) les variables de ce formulaire pour les traiter suand même ?

Non, tu user control se fait de toute maniere integrer dans une page avec un formulaire, donc il faut PAS en mettre un. Tu recup les variables parceque asp.net est assez malin pour les re router lui meme sur le code behind de ton user control.

d’accord, donc je résume :

  - Pas du tout de FORMULAIRE dans les UserControls
  - Je peux quand meme mettre des input type=“text” car ASP.NET les retraitera directement dans le CodeBehind…

Je ne peux pas tester tout de suite mais dès que je rentre, je m’y colle !!!

PS : Je comprends vite mais faut m’expliquer longtemps

Ouais, mais tant qu’à faire, utilise des TextBox plutôt que des input type=text, le modèle objet côté serveur est quand même plus riche…

d’accord, mais je n’ai pas encore l’habitude

Salut !

Après une courte pause, je me susi remis à l’apprentissage d’ASP.NET et j’ai essayé de mettre des tag asp:Textbox</asp:Textbox> dans mon UserControl sans balise mais çà ne fonctionne pas :’(.

je vais craquer

Merci.

Sois gentil d’être un peu plus précis. “ça marche pas”, ça ne nous avance pas à grand chose.
Poste ton code source, et dis-nous quelle erreur tu reçois.
As-tu bien mis le runat=server dans <asp:textbox runat=server/> ?

Ouai, c’est vrai excusez-moi j’ai pas assuré sur ce coup là…
Ce message a été édité par EzecKiel le 25/02/2004

T’as pas de bol, je suis sur une machine sur laquelle il n’y a pas winrar (et je n’ai pas le temps de l’installer).
Bon, dans ta page, il faut que tu aies quand même un tag . Pas dans le contrôle, dans la page. Un seul.

J’ai du rater quelque chose… Le UserControl s’intègre à ton aspx…
Si dans ton user control tu met déjà les balises , t’es mal barré pour du code HTML propre…

Et, encore une fois, pour gérer des asp:xxx tu dois nécessairement avoir un qui englobe ces controles. Au vu de ton code (balise ) t’es un peu forcé de mettre ce “form” dans ton UserControl et rien dans ta page principale…

Mais, pour des raisons design, c’est mauvais de mettre un dans un UserControl.

Voilà j’espère que ça ira…
Ce message a été édité par Xas le 25/02/2004

Tout à fait.
La bonne structure est:
Dans la page aspx:

...

Et dans les contrôles, ce que tu veux, mais pas de .

[quote]J’ai du rater quelque chose… Le UserControl s’intègre à ton aspx…
Si dans ton user control tu met déjà les balises , t’es mal barré pour du code HTML propre…

En fait c’est VS qui rajoute çà quand on passe du mode HTML au mode DESIGN. Mais merci je n’avais pas fait gaffe.

Sinon je n’avais pas saisi çà. En fait comme je voulais que mon UserControl fasse office d’entete de page, je m’étais dit autant inclure le début du code d’une page HTML, c’est à dire ce bloc là :

[quote] 

[/quote]dans le UserControl. Il ne faut pas :$... Je ne vais pas avoir trop le temps de tester çà cette semaine mais je m'y remets dès que je peux...

Merci de vos conseils en tout cas !