[.NET] Récupération des balises FORM ou BODY dans le code Behind
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
8 mars 2005 à 10:26
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 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 ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 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
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 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);
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 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
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 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 ;-(((
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 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é ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 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...
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 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 )