Pergunta

Ok,

Eu sei que é estranho, mas quando eu coloquei esse código entre <head runat="server"></head> Na Master.page, é assim que ele se torna:

 <link id="ctl00_Link1" rel="shortcut icon" href="../%3C%25%20ResolveUrl(%22~/Resources/Pictures/Shared/Misc/favicon.ico%22);%20%25%3E" type="image/x-icon" />

Não vê algo que asp.net precisa cuidar.

Este é o código original:

<link id="Link1" rel="shortcut icon" href='<%=ResolveUrl("~/Resources/Pictures/Shared/Misc/favicon.ico") %>' type="image/x-icon" runat="server" />

Basicamente, o ASP.NET não cuida do código abaixo e torna o HTML normal.

Como posso superar esse problema?

Desde já, obrigado...

Editar e resolver

Ok, pessoal, não há como fazer isso. Finalmente descobri porque o Resolveurl ou o Resolveclienturl está funcionando apenas para estes abaixo:

@import '<%= ResolveUrl("~/Resources/Styles/MainMaster/MainDesign.css") %>';
<script src='Resources/Scripts/Libraries/jquery-1.4.2.js' type="text/javascript"</script>

É muito literal para link, então você precisa colocar elementos de link na etiqueta corporal como:

<body>
    <link id="iconOne" rel="shortcut icon" type="image/x-icon" href="Resources/Pictures/Shared/Misc/favicon.ico"/>
    <link id="iconTwo" rel="icon" href='Resources/Pictures/Shared/Misc/favicon.ico' type="image/ico" />
</body>
Foi útil?

Solução

Então, a razão pela qual você encontrou sua primeira edição foi porque a etiqueta do link teve runat="server" Isso diz ao ASP.NET para tratá -lo como um controle de servidor, em vez de literal. Porque é um controle de servidor, sua tag scriptlet (<%= %>) não está realmente fazendo nada, pois é uma propriedade de controle de servidor, está tratando -a como texto literal.

Existem duas maneiras de lidar com isso. Primeiro é CustomerscriptManager Para registrar um script de inicialização. Isso colocará sua tag de link dentro do corpo, que é a maneira como a Microsoft diz que você deve fazê -lo, mas esteticamente não é tão bom. A outra opção é fazer algo assim em seu Page_load

var link = new HtmlGenericControl("link");
link.Attributes.Add("rel", "shortcut icon");
link.Attributes.Add("src", ResolveUrl("~/Resources/Pictures/Shared/Misc/favicon.ico"));
link.Attributes.Add("type", "image/x-icon");

Header.Controls.Add(link);

Isso cria um controle programaticamente e o adiciona à coleção de controles na cabeça, que renderizará como o que você deseja no final da etiqueta da cabeça. O problema disso é que é um pouco mais trabalhoso e é melhor evitar macacos com coleções de controle no código do nível, se você puder se safar.

Outras dicas

Isso pode estar tornando -o um pouco mais complicado do que precisa. Você já tentou simplesmente usar ~ no caminho do ícone e configuração <head runat="server">?

Por exemplo:

<head runat="server">
    ...
    <link rel="icon" href="~/Resources/Pictures/Shared/Misc/favicon.ico" 
        type="image/x-icon" />
    <link rel="shortcut icon" href="~/Resources/Pictures/Shared/Misc/favicon.ico"
        type="image/x-icon" />
    ...
</head>

Related So Responder: Favicon não está aparecendo

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