2012-09-25 18 views
5

Estoy tratando de poner algunas variables de servidor en línea en una página para que pueda obtener el camino correcto para una imagen, usando 2012.¿Cuál es la forma correcta de insertar etiquetas de servidor en línea en la sección css de una página?

lo estoy haciendo como esto Visual Studio:

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

El problema es que una vez escrito esto, toda la sección de estilo pierde el formato de color con el editor VS2012. ¿Hay alguna manera diferente de hacer esto (o una opción en VS2012), para que no pierda los colores y la sangría?

+1

Por qué ISN' t esto declarado en un archivo CSS externo? – cimmanon

Respuesta

3

La razón de que Visual Studio está perdiendo su formateo es que usted está mezclando CSS y el código del lado del servidor de la siguiente manera.

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

Debe separar su CSS de su código.

rutas de las imágenes son en relación con la ubicación del archivo css, css así como a continuación es correcta, por lo tanto, no es necesario utilizar una ruta de la aplicación elaborado por Url.Content (~)

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

¿Qué pasa si esas reglas CSS están en una página maestra? Las Vistas que se cargan basadas en el maestro tienen ubicaciones diferentes a las de la página mater. Necesitaría agregar más ../ dependiendo de la ubicación de la vista para obtener la ruta correcta. –

+0

El punto es que (según el comentario de cimmanon) su CSS debe estar separado de su aspx. Las imágenes de Style agregadas en la forma en que está intentando causan problemas de formato de Visual Studio, ya que está usando etiquetas de servidor dentro de CSS. En un archivo CSS separado, la ruta de la imagen es relativa al css. –

+0

Lo tendremos en cuenta. Gracias. –

3

Este es un problema o característica de Visual Studio Highlight para estilos CSS. Intenta usar URL relativas al servidor, que son conocidas.

Si necesita insertar un código del lado del servidor en estilos CSS, puede usar el atributo style en html-markup. Por ejemplo:

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

Si no te gusta este código o es necesario utilizar más de una vez en diferentes lugares, la mejor manera sería la creación de su propio control del lado del servidor con una URL propiedad pública (por ejemplo). Por último, se veía así:

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

El problema es que no siempre conozco la URL relativa de la Vista, ya que estos se usan en una Página Maestra. –

+0

Sí. Estás en lo correcto, pero según tengo entendido, la idea de la página maestra es proporcionar una plantilla para una página de contenido. Entonces, la mejor manera sería anular los estilos de página maestra en la página de contenido. Creo que una página maestra no necesita saber sobre páginas de contenido. ¿Estas de acuerdo conmigo? – Warlock

+0

Sí, tienes razón. Pero en este caso, por ejemplo, tenemos un estilo para un botón. Este estilo se usa en todas las vistas que heredan la página maestra. Tendría que repetir el estilo en todas las vistas, lo que vencería el propósito de la página maestra, que contiene todo lo que es común a todas las Vistas. –

Cuestiones relacionadas