Problema riferimento assoluto oggetti webapplication

mercoledì 10 gennaio 2007 - 11.09

nullatore Profilo | Junior Member

Situazione: 2 pagine .aspx e una classe .cs

le 2 pagine aspx sono sistemate in due livelli diversi (la prima, chiamiamola master.aspx si trova nella root della webapplication, mentre la seconda, slave.aspx, si trova in una cartella contenuta nella root: /Sub/slave.aspx)

Entrambe utilizzano una stessa classe (pannello.cs) la quale svolge il ruolo di creazione di una pannellino grafico.
Questa classe fa riferimento ad alcune immagini sistemate in un'altra cartella dentro la root (/Immagini). Come potrete capire inserendo staticamente questi riferimenti dentro <pannello.cs> ottengo la corretta visualizzazione solo per una delle 2 pagine .aspx.

Come potrei ovviare?

L'unica idea che mi è venuta è quella di apporre dinamicamente all'url dell'immagini il testo "../" tante volte quanto è profonda la pagina .aspx (che sta visualizzando il componente) dalla root della web application.
Sono un pazzo?
Nel caso non lo fossi, come posso estrarre tale informazione dalla mia pagina apsx(profondità dalla root)?

amelix Profilo | Expert

Usa il carattere ~ (ALT+126) che, per gli oggetti runat="server", fa lui tutto il lavoro "sporco".
Se xò l'img è puro html... hai un problema!!!!
Andrea
http://amelix.blogspot.com/index.html

alx_81 Profilo | Guru

>Situazione: 2 pagine .aspx e una classe .cs
>
>le 2 pagine aspx sono sistemate in due livelli diversi (la prima,
>chiamiamola master.aspx si trova nella root della webapplication,
>mentre la seconda, slave.aspx, si trova in una cartella contenuta
>nella root: /Sub/slave.aspx)
>
>Entrambe utilizzano una stessa classe (pannello.cs) la quale
>svolge il ruolo di creazione di una pannellino grafico.
>Questa classe fa riferimento ad alcune immagini sistemate in
>un'altra cartella dentro la root (/Immagini). Come potrete capire
>inserendo staticamente questi riferimenti dentro <pannello.cs>
>ottengo la corretta visualizzazione solo per una delle 2 pagine
>.aspx.
>
>Come potrei ovviare?
>
>L'unica idea che mi è venuta è quella di apporre dinamicamente
>all'url dell'immagini il testo "../" tante volte quanto è profonda
>la pagina .aspx (che sta visualizzando il componente) dalla root
>della web application.
>Sono un pazzo?
>Nel caso non lo fossi, come posso estrarre tale informazione
>dalla mia pagina apsx(profondità dalla root)?

Ciao!

Se utilizzi la tilde ~/ prima di "immagini", dovrebbe funzionare, ma non so di preciso quello che fa la tua pannello.cs
facendo riferimento con la "~/" punti al path dell'applicazione, quindi, ovunque ti trovi, punti sempre lì.. indipendentemente dal livello in cui è la tua pagina aspx..

ad esempio "~/immagini/prova.jpg"




Alx81 =)

http://blogs.dotnethell.it/suxstellino

nullatore Profilo | Junior Member

>Usa il carattere ~ (ALT+126) che, per gli oggetti runat="server",
>fa lui tutto il lavoro "sporco".
>Se xò l'img è puro html... hai un problema!!!!
>Andrea
>http://amelix.blogspot.com/index.html

Ok. Allora ho un problema.

Il paradosso che in questa classe tutti i componenti sono di tipo server! Mi spiego meglio:

questa classe è derivata dalla classe Panel in cui, dinamicamente, nell' suo OnInit ci 'appiccico' una bella HtmlTable.

Il problema esce quando devo definire il background di alcune celle di questa HtmlTable, e più precisamente quando faccio questo:

HtmlTable tab=new HtmlTable();
tab.Border=0;
tab.CellPadding=0;
tab.CellSpacing=0;
tab.Width = "197px";

HtmlTableRow row_head=new HtmlTableRow();
HtmlTableCell cell1=new HtmlTableCell();
HtmlTableCell cell2=new HtmlTableCell();
HtmlTableCell cell3=new HtmlTableCell();
HtmlTableCell cell4=new HtmlTableCell();

cell1.Style.Add("background-image","url('Immagini/menu_header_bg_light.bmp')");
.....


C'e' un rimedio per questo? Oppure devo ripiegare sulla soluzione di generazione dinamica del percorso?

amelix Profilo | Expert

Allora fai così:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Non mi ricordo se il virtualPath restituito ti dia o meno lo '/' finale.
Io ho ipotizzato che Immagini fosse nella root del tuo progetto.

PS. Usa un div al posto della table,tr,td (tableless)... in un unica riga hai lo stesso risultato!
Andrea
http://amelix.blogspot.com/index.html

nullatore Profilo | Junior Member

>PS. Usa un div al posto della table,tr,td (tableless)... in un
>unica riga hai lo stesso risultato!
>Andrea
>http://amelix.blogspot.com/index.html

Grazie per la risposta ma non ho capito il tuo p.s.

amelix Profilo | Expert

>>PS. Usa un div al posto della table,tr,td (tableless)... in un
>>unica riga hai lo stesso risultato!
>>Andrea
>>http://amelix.blogspot.com/index.html
>
>Grazie per la risposta ma non ho capito il tuo p.s.
>
Lascia perdere....
E che sono entrato nel tunnel del 'tableless' e cerco di toglierle ovunque... anche quando ci vogliono!!!!
Andrea
http://amelix.blogspot.com/index.html
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5