2012-09-25 15 views
5

Sto cercando di mettere alcuni tag di server in linea su una pagina in modo da poter ottenere il percorso giusto per un'immagine, utilizzando Visual Studio 2012.Qual è il modo giusto per inserire tag del server in linea nella sezione css di una pagina?

lo sto facendo in questo modo:

<style type="text/css"> 
.someclass 
{ 
    background-image: url(<%=Url.Content("~/Content/Images/messageIcon.gif")%>); 
} 
</style> 

Il problema è che una volta scritto, l'intera sezione di stile perde la formattazione del colore con l'editor VS2012. C'è un modo diverso per farlo (o un'opzione in VS2012), in modo da non perdere i colori e il rientro?

+1

Perché isn' questo è dichiarato in un file CSS esterno? – cimmanon

risposta

3

Il motivo per cui lo studio visivo sta perdendo la sua formattazione è che si stia mescolando CSS e il codice lato server, come di seguito.

<style type="text/css"> 
.someclass 
{  
    background-image: url(<%=Url.Content("~/Content/Images/messageIcon.gif")%>); 
}  
</style> 

È necessario separare il css dal codice.

percorsi delle immagini sono relativi alla posizione del file css, quindi css come qui di seguito è corretto, quindi non è necessario utilizzare un percorso di applicazione elaborato da Url.Content (~)

.someclass 
{  
    background-image: url(../Images/messageIcon.gif); 
}  
+0

Cosa succede se quelle regole CSS sono in una pagina principale? Le viste caricate in base al master hanno posizioni diverse da quelle della pagina mater. Avrei bisogno di aggiungere altro ../ a seconda della posizione della vista per ottenere il percorso giusto. –

+0

Il punto è che (come nel commento di cimmanon) il tuo CSS dovrebbe essere separato dal tuo aspx. Le immagini di stile aggiunte nel modo in cui stai provando causano problemi di formattazione di Visual Studio, poiché stai utilizzando i tag del server all'interno dei CSS. In un file CSS separato il percorso dell'immagine è quindi relativo al css. –

+0

Lo terrò a mente. Grazie. –

3

Questo è un problema di funzionalità di Visual Studio o funzionalità per gli stili CSS. Prova ad usare gli URL relativi al server, che sono noti.

Se è necessario inserire un codice lato server negli stili css, è possibile utilizzare l'attributo style in html-markup. Per esempio:

<div class="beautiful-button" style="background-image: url('<%=Url.Content("~/Content/Images/messageIcon.gif")%>')"> 
... 
</div> 

Se non ti piace questo codice o è necessario utilizzare più di una volta in luoghi diversi, il modo migliore sarebbe quello di creare il proprio controllo sul lato server con un URL proprietà pubblica (per esempio). Infine, sarà guardato come questo:

<asp:MyOwnControl runat="server" class="beautiful-button" URL="~/Content/Images/messageIcon.gif" /> 
+0

Il fatto è che non sempre conosco l'URL relativo per la vista poiché questi stili sono usati in una pagina master. –

+0

Sì. Hai ragione, ma come ho capito, l'idea della pagina master è di fornire un modello per una pagina di contenuto. Pertanto, il modo migliore sarebbe sostituire gli stili della pagina principale nella pagina dei contenuti. Penso che una pagina principale non abbia bisogno di sapere sulle pagine di contenuto. Sei d'accordo con me? – Warlock

+0

Sì, hai ragione. Ma in questo caso, ad esempio, abbiamo uno stile per un pulsante. Questo stile è utilizzato in tutte le viste che ereditano la pagina principale. Dovrei ripetere lo stile su tutte le viste, il che annullerebbe lo scopo della pagina principale, che contiene tutto ciò che è comune a tutte le viste. –

Problemi correlati