Código en línea en la etiqueta principal – ASP.NET

¿Es posible hacer algo como esto en una etiqueta principal, de página maestra, que tiene runatserver:

<link rel="Stylesheet" type="text/css" href='/images/style.css' /> 

Esto no funciona, ya que produce este tipo de html:

 /images/style.css" /> 

La razón por la cual la salida se está renderizando así:

 href="<%=Config.ResourcesDomain %>/images/style.css" 

Es porque ASP.NET está tratando el enlace como un control HtmlLink , y representando el contenido del atributo href como un literal.

Esta es una extraña peculiaridad de marcar la sección de encabezado como un control de servidor, donde ciertos elementos se tratan como controles de servidor (incluso sin estar marcados explícitamente con el atributo runat="server" ).

La eliminación de las citas en torno al atributo href resuelve el problema:

 href=<%= Config.ResourcesDomain %>/images/style.css 

Hacerlo detiene el elemento de enlace que se trata como un control de servidor, ejecutando así el bloque de código y representando la URL correcta.

Sin embargo, lo anterior escribe el valor href sin comillas. Usando lo siguiente, agregará las comillas a la etiqueta de enlace:

 href=<%= String.Format("'{0}'", Config.ResourcesDomain) %>/images/style.css 

Espero que esto ayude.

Editar

Extrañamente, si usas comillas dobles para el atributo href e incluyen comillas dobles dentro del bloque de código, esto también resuelve el problema:

 href="<%= "" + Config.ResourcesDomain %>/images/style.css" 

Sin embargo, ninguno de los anteriores son soluciones particularmente elegantes, y establecer el URL desde el código subyacente es probablemente el camino a seguir.

Otra solución que he encontrado aquí: https://stackoverflow.com/a/5727996/368613 – simplemente coloque el código dentro de PlaceHolder:

  ... your code with <%= %> tags ...  

margen

    

código detrás:

en la página carga

 litHead.Text = ""; 

Actualización: haz esto entonces

  <% Response.Write(""); %>   

cambiarlo a

   

Deberia de funcionar

Elimine el atributo runat = “server” en la etiqueta del encabezado de apertura. De esta forma, el código en línea de asp.net se representa correctamente.

O haz algo como esto:

    

Aparentemente, se requiere el enlace de datos cuando se utiliza la etiqueta en línea “<% #%>“.

  //Stuff with inline code  

Código detrás:

 protected void Page_Load { Head.DataBind(); } 

Saludos