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)

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) {
 
       }
    }
}
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 :

l'inscription se fait dans le corps de la page ...
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&amp;t=633280615403125000" type="text/javascript"></script>
...
</body>
</html>
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
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&amp;t=633280615403125000" type="text/javascript"></script>
...
 
</head>
<body>
....
 
</body>
</html>
mais je ne vois pas comment faire ...
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
protected void Page_Load(object sender, EventArgs e) {}
Mais là ce n'est pas possible ...

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