Pergunta

Estou tentando usar o método Response.Write () para inserir dinamicamente o conteúdo na seção <head> de uma página ASPX. Preciso injetar um valor de string de uma propriedade em um objeto Code-Behind, que é um link para o meu arquivo CSS. No entanto, ele não está sendo processado corretamente no tempo de execução. O objeto é público na classe e é hidratado no evento Page_load (). No corpo da página, posso injetar com sucesso outras propriedades do objeto coroartion sem nenhum problema.

Por que isso não funciona na seção <head>?

Esta é a parte que não se expande corretamente:

<link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />

Aqui está a seção inteira <head>:

<head runat="server">
    <title></title>
    <link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />
    <script language="JavaScript" type="text/JavaScript" src="cntv_menu.js"></script>
    <script language="JavaScript" type="text/JavaScript" src="cntv_category.js"></script>   
</head>

Qual é o motivo de isso não se expandir corretamente?

Foi útil?

Solução

Você não pode usar <%= %> dentro de a runat="server" tag, que seu <head> tag é.

Você pode mudar para <%# %> e banco de dados no código-behind, ou você pode fazer a tag de link runat="server", dê um id e atribua o atributo do código por trás.

Ver esta resposta, que entra nos detalhes.

Outras dicas

Usa isto:

this.myButton.Attributes.Add(attribute, value);

Funcionou para mim :)

A melhor maneira de resolver esse problema é usar Onprender

Exemplo:

Primeiro, defina sua tag:

<link href="~/css/your_default.css" type="text/css" runat="server" id="myCSS" />

E no Onprender:

protected override void OnPreRender(EventArgs e){
     base.OnPreRender(e);
     myCSS.Attributes["href"] = "~/css/your_new.css";
}

Se você escrever a linha completa, você deve ficar bem:

<%
Response.write("<link href=\"" + Corporation.PageStyleSheet + "\" rel=\"stylesheet\" />");
%>

PS Minha sintaxe pode não estar completamente certa, desculpe -me antecipadamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top