[.NET] Récupération des balises FORM ou BODY dans le code Behind

cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 8 mars 2005 à 10:26
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 9 mars 2005 à 13:36
Bonjour à tous,

est-il possible de récuperer les balises FORM ou BODY pour, par exemple, leur ajouter ou récuperer des attributs ?

Genre: Body.attibutes.add('onKeyPress','alert("coucou")');

Merci d'avance.

David, à VERSAILLES
A voir également:

11 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 mars 2005 à 12:05
Oui ! c'est possible, mais tu vas t'amuser, j'espere que t'aime manipuler des strings



pour le form, je sais pas si c'est possible, mais t'as essayer de faire un simple Form1.attributes.add



Sinon il va falloir surcharger la page, et dériver toutes tes pages de ta nouvelle page, ensuite dans le render.



le body se trouve dans me.controls(0) je crois que c'est un
literalControl, donc tu peux recuperer le texte facilement, apres tu
obtient un string, donc a partir de la c'est pénible mais c'est pas
compliqué :p pour le form il est dans me.controls(1) et meme fonction



Mais je pense que tu dois arriver en faisant un Form1.attributes.add(...)

pour le body, je viens d'y penser, mais tu peux aussi faire ca en
ajoutant l'attribut runat="server" et un ID à la balise
apres pour le type, tu t'en fous, c'est un control, et les controls ont
tous un attributes.add



Je sais pas si j'ai été clair, je pense que non mais s'il faut je reexpliquerais




<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
8 mars 2005 à 14:40
Tu as été très clair, mais j'ai des points à règler...

Les controls ne possèdent pas la propriété Attributes:
page.Controls.Item[0].Attributes.add('vc','cv'); // ERREUR lors de la compil

Les webControls, seulement, la possèdent, et si je caste le controls[0], il me met une erreur de cast lors de l'éxecution (normal):
(page.Controls.Item[0] as WebControl);

David, à VERSAILLES
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 mars 2005 à 15:18
Ah oui, Controls ne possedent pas l'attribut attributes



Quand tu fais ton parsing, il doit te retourner une erreur qui dit
impossible de caster un truc en webcontrol, il te donne donc le type du
controle, essaye de le caster en truc, et regarde si t'as l'attribut
attributes.

sinon va falloir que tu t'amuses a overrider le render de la page (ca
se fait mais faut l'habitude) Pour t'aider, regarde une source de
SebMafate sur asp-php.net pour faire du xhtml en asp.net




<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
8 mars 2005 à 16:56
Non, le message d'erreur n'est pas assez précis... pas moyen d'avoir le type.

Une exception non gérée s'est produite ...
[InvalidCastException: Le cast spécifié n'est pas valide.]
wuc_Activites.wucActivites.Page_Load(Object sender, EventArgs e) in DesktopModules\wuc_Activites.pas:44

Sinon, ça va me donner quoi d'overrider le render de la page ?

David, à VERSAILLES
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
8 mars 2005 à 17:06
En fait, j'ai fait un GetType.ToString
C'est donc un LiteralControl, mais ce type ne possède pas la procedure ATTRIBUTES

J'en déduit qu'il ne me reste plus qu'à, selon tes bons conseils, overrider le render...
Comment fait-on ça ?

David, à VERSAILLES
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
8 mars 2005 à 17:09
Je me doit de préciser que je travaille en Deplhi.Net, j'arrive bien à adapter votre code (dans la plupart des cas...) mais je ne peux pas ouvrir vos sources ;-(((

David, à VERSAILLES
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
8 mars 2005 à 17:38
Désolé de spammer le sujet mais j'ai des infos:

1 - L'élément page.Controls[1] n'est pas la balise FORM mais la balise TITLE
2 - J'arrive à récupérer la balise FORM avec page.FindControl['monForm']
de plus, c'est un HtmlForm et il possède la proc ATTRIBUTES... EXTRA !!!
3 - J'ai beau mettre un id="corps", impossible de récuperer la balise BODY de la même manière
4 - à la différence de la balise FORM, la balise BODY ne possède pas runat=server
5 - La balise BODY n'accepte pas la balise runat=server

Je pense qu'a partir du moment ou elle l'acceptera, on pourra la récuperer, nan ?
t'ai-je aiguillé ?

David, à VERSAILLES
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 mars 2005 à 18:35
1. T'as rajouter <title runat="server"
id="title">Titre</title> car si c'est le cas, j'ai tout un
code de ma conception qui a un bug

2.3.4.5. Je savais pas qu'elle n'acceptait pas la méthode runat="server"



pour l'overrides, tu connais le surcharge des classes, l'héritage etc... ?

overrides permet de redefinir une méthode d'une classe de base, et
render et la méthode qui ecrit le contenu de la page dans la response
du client, donc la t'auras tout le code html de ta page, si t'es
courageux tu fais de la manipulation de string, et réecris ta page.

Regarde l'exemple d'overrides et de manipulation de string sur le site asp-php.net (de sebmafate)



Sinon une méthode "crade"



>

tu declares GetBodyAttributes en public dans le code-behind de la page
etc ... un joli code crade mais qui te permet quand meme de faire
quelque chose.



Si ca t'interesse d'avoir quelque chose d'un peu plus propre,
j'essaierais de t'expliquer le truc, mais faut deja que tu ai compris
le principe de l'héritage etc...


<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 mars 2005 à 01:28
Je viens de voir qu'attributes est dispo ici : System.Web.UI.HtmlControls.HtmlGenericControl



je sais pas si ca peut aider

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
9 mars 2005 à 10:34
Je n'ai pas ajouté la balise runat dans title, elle s'est mise toute seule. (Rassuré ? ;-))


Pour la source de sebmafate, je ne l'ai pas trouvée (Comment cherche-t-on un utilisateur ?)


je connais bie le principe de l'héritage et de la surcharge mais je ne vois pas en quoi ça serait interessant d'overrider le render... peux tu m'éclaircir STP (et je ne cracherais pas sur un p'tit exemple )

David, à VERSAILLES
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 mars 2005 à 13:36
Pour le title runat=server, merci ca m'a permis de corriger un de mes bugs sur une source ;)



Voici la source de Maf'



http://www.asp-php.net/scripts/asp.net/aspnet-xhtml.php?page=2



Tu vois qu'il réorganise tout le contenu de la page, ferme les balises non fermés, mais des trucs en minuscule etc...

donc tu pourras toi aussi rajouter un attribut la ou tu veux.

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
Rejoignez-nous