Bonjour,
Je suis en train d'écrire mon propre controle WEB définit par (je n'ai laissé que l'indispensable à la compréhension du pb)
pour résumé, j'inscrit les scripts JS lors du prérendu de l'objet, après avoir testé si le script est déjà enregistré ou pas... cela fonctionne MAIS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 [assembly: WebResource("CMRCss.CMRCode.js", "text/javascript")] [assembly: WebResource("CMRCss.CMRStyle.css", "text/css")] namespace CMRCss { public class CMRColor : WebControl { protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (Page == null) return; if (Page.Request == null) return; RegisterCommonScript(); } protected void RegisterCommonScript() { String url; if (!Page.ClientScript.IsClientScriptIncludeRegistered("CMRColorJS")) { url = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CMRCss.CMRCode.js"); Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "CMRColorJS", url); } } protected override void Render(HtmlTextWriter output) { } } }
l'inscription se fait dans le corps de la page ...
j'aurais préféré qu'il se fasse dans l'entête de la page comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> .... </head> <body> .... <script src="/WebResource.axd?d=6oCfncleDgDbl_IWei4zBtRquV-LCqS9-NZVoxkNyNw1&t=633280615403125000" type="text/javascript"></script> ... </body> </html>
mais je ne vois pas comment faire ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> ... <script src="/WebResource.axd?d=6oCfncleDgDbl_IWei4zBtRquV-LCqS9-NZVoxkNyNw1&t=633280615403125000" type="text/javascript"></script> ... </head> <body> .... </body> </html>
Je précise bien que c'est un contrôle que je développe, pas une application . Si c'était une appli, je pourrais traiter le problème dans :
Mais là ce n'est pas possible ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 protected void Page_Load(object sender, EventArgs e) {}
Plus grave, je ne trouve pas comment enregister un CSS tout en m'assurant qu'il n'a pas déjà été enregistré par un autre contrôle automatique. Il y a la solution d'ajouter une propriété statique indiquant si le CSS est inscrit ou pas, mais cette inscription se ferait dans le corps de la page (donc même problème que précédemment), et non l'entête. Or, XHTML 1 Transitional impose ses déclarations dans l'entête
Partager