Parsing de page ASPX et Addin Visual Studio

Bonjour,

J’ai besoin de faire un AddIn pour Visual Studio 2005 qui fait plus ou moins la même chose que le tool de Microsoft qui génère les resources locales des pages ASPX.
Il doit parcourir la page ASPX et récupérer les IDs des différents contrôles et les propriétés de ceux-ci qui ont le tag “localizable” pour faire une liste du style :[ul]
[li]Button1.Text[/li][li]Label1.Text[/li][li]etc…[/li][/ul]Microsoft fait ca puis stocke le tout dans un fichier resx. Moi je dois faire la même chose mais l’envoyer à une base de donnée.

Je ne dois pas non plus modifier le markup asp (pas de meta blabla) donc je ne peux pas lancer le tool microsoft, recuperer le resx, le traiter, puis le virer.

Je pensais, j’espérais, qu’il y aurait moyen de récupérer le résultat du parsing en mode design. Comme le tool de Microsoft le nécessite. Si quelqu’un pouvait avoir une idée de comment s’y prendre …

Au début je pensais procéder par réflexion mais évidemment l’ID n’est set qu’en runtime. Je tente alors de créer une instance mais il faut que la page se load pour que les contrôles soient effectivement créés. Après le constructeur j’ai juste des références nulles (Label1 = null, Button1 = null), etc.

Si vous avez une idée, …

Merci d’avance.

Juste pour être sur, pour les ID, tu veux récupérer les trucs genre “ctl00_HyperLink1” et pas “HyperLink1” par exemple ?

Au final j’ai besoin de l’unique ID, donc de ctl00_HyperLink1. Mais les ctl00, ctl01, etc sont généralements synonymes de contenu dynamique (item de repeater, cell de gridview, etc) dont je ne me préocupe pas.

Si dans la page un bouton a ID=“Button1” ca restera pareil dans l’output. Sauf s’il y a masterpage mais la je sais que c’est l’id du contentholder.

Au final, je me débrouille avec l’ID tout simple B)

[quote=“Asarnil, post:3, topic: 31685”]Au final j’ai besoin de l’unique ID, donc de ctl00_HyperLink1. Mais les ctl00, ctl01, etc sont généralements synonymes de contenu dynamique (item de repeater, cell de gridview, etc) dont je ne me préocupe pas.

Si dans la page un bouton a ID=“Button1” ca restera pareil dans l’output. Sauf s’il y a masterpage mais la je sais que c’est l’id du contentholder.

Au final, je me débrouille avec l’ID tout simple B)[/quote]

Mais euh, c’est ptete passque je me suis pas penché sur la question encore, mais pourquoi tu parse pas ta page comme un fichier xml du coup ? A moins que tes page soient dans un sale état ca devrait pas poser de soucis. Et dans le cas ou cette solution ne marche pas, j’imagine que ca doit être assez simple à faire à grand coup d’expressions régulières (vu que tous les tags asp commencent pas “<asp:”). Mais je rate ptete un truc.

ca ne commence pas forcément par asp: . Tu oublies les custom tools qui ont un namespace différent B)

Quand à parser en tant que fichier XML, je ne préfère pas tenter, ca doit fonctionner peu importe l’état de la page.

[quote=“Asarnil, post:5, topic: 31685”]ca ne commence pas forcément par asp: . Tu oublies les custom tools qui ont un namespace différent B)

Quand à parser en tant que fichier XML, je ne préfère pas tenter, ca doit fonctionner peu importe l’état de la page.[/quote]

vi enfin pour les custom tag, ils sont register en haut de la page, ca me semble pas un challenge particulièrement difficile. Quoi qu’il en soit, il te reste les expressions régulières du coup. Si tu n’a pas besoin d’avoir l’arborescence, ca te sauve carrément du temps. Google peut aussi t’aider.

J’ai trouvé ca qui va dans le bon sens :

http://www.codeproject.com/aspnet/ASParser.asp

ca ne règle pas tout mais c’est déjà pas mal.