| Piero Capomastri |
Path script e css su UserControl
Ho creato uno UserControl che utilizza 1 file css e 1 file javascript.
Nello userControl ho: <link rel="stylesheet" href="css/navbar.css" type="text/css"> <script language="JavaScript" src="/script/ShowHideObjHtml.js"></script> Il problema nasce quando lo usercontrol viene incluso in pagine che non si trovano sulla root del sito perchè i file non vengono più trovati (il path ovviamente è sbagliato) Se utilizzo un URL relativo alla directory principale ugualmente non funziona: "/cartellaprincipale/css/navbar.css" e "/cartellaprincipale/script/ShowHideObjHtml.js" oppure "//cartellaprincipale/css/navbar.css" e "//cartellaprincipale/script/ShowHideObjHtml.js" oppure "//css/navbar.css" e "//script/ShowHideObjHtml.js" oppure "/css/navbar.css" e "/script/ShowHideObjHtml.js" Come posso fare? |
| Marco Barzaghi |
Re: Path script e css su UserControl
la via migliore, a mio parere, è usare degli URL assoluti:
http://server/myproject/css/file.css oppure /myproject/css/file.css a tal proposito potrebbero nascere dei problemi quando passi da fase di test, dove potresti usare una virtual directory, a produzione quando usi un virtual site... dove i path assoluti giustamente cambiano. A tal proposito ti suggerisco di usare il tag html base <base href="http://server/myproject/"> e il percorso del css a qsto punto è: css/file.css oppure qndo si passa a virtual site <base href="http://myprojectdomain/"> e il percorso del css a qsto punto è esattamente lo stesso: css/file.css il tag base va specificato in ogni pagina, quindi o incluso in uno usercontrol o il valore da assegnare a href potrebbe essere ricavato dal file di configuraizone web.config ciao M. |
| Marco Barzaghi |
Re: Path script e css su UserControl
se non intendi usare il tag base ma comunque ti sembra buona cosa il suggerimento di usare il path assoluti, nulla ti vieta di comporre il path usando il "prefisso" impostato da codice, meglio se configurato nel file di configurazione web.config.
<%dim baseRoot as string = "http://myserver/myproject/"%> <link rel="stylesheet" href="<%=baseRoot%>css/navbar.css" type="text/css"> potresti inserire la varaibile baseRoot nella classe Global, Globas. asax, e sviluppare dei metodi per leggerla... esempio: <link rel="stylesheet" href="<%=Global.GetBaseRoot()%>css/navbar.css" type="text/css"> ciao M. |
| Piero Capomastri |
Re: Path script e css su UserControl
Un'ultima cosa, come faccio a salvarlo sul web.config e a ripescarlo.
Non ho mai usato il web.config.... |
| Marco Barzaghi |
Re: Path script e css su UserControl
a tal proposito puoi leggere il tip http://www.ugidotnet.org/tips/tips_read.aspx?ID=22
in linea di massima per leggere dal web.config: Dim myBaseRoot as String = ConfigurationSettings.AppSettings("baseroot") il web.config va impostato manualmente come specificato nel tip. ciao M.rkino |