Domanda

Va bene,

So che è strano, ma quando inserisco questo codice in mezzo <head runat="server"></head> in master.page, ecco come viene visualizzato:

 <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" />

Non vede qualcosa di cui asp.net deve occuparsi.

Questo è il codice originale:

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

Fondamentalmente Asp.Net non si prende cura del codice seguente e viene visualizzato come un normale codice HTML.

Come posso superare questo problema?

Grazie in anticipo...

Modifica e risolto

Ok gente, non c'è modo di farlo.Finalmente ho capito perché ResolveUrl o ResolveClientUrl funziona solo per questi seguenti:

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

è troppo letterale per il collegamento quindi è necessario inserire gli elementi del collegamento nel tag body come:

<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>
È stato utile?

Soluzione

Quindi, il motivo è stato eseguito nel vostro primo numero è stato perché il tag link aveva runat="server" Questo dice asp.net di trattarlo come un controllo server, piuttosto che un letterale. Perché il suo un controllo server, il tag scriptlet (<%= %>) non è realmente facendo nulla, dal momento che la sua una proprietà controllo server è trattandolo come testo letterale.

Ci sono due modi di gestirlo. In primo luogo è quello di ClientScriptManager registrare una startup script. Questo metterà il tag di collegamento all'interno del corpo, che è il modo in cui Microsoft dice che si dovrebbe fare, ma esteticamente non è bella. L'altra opzione è quella di fare qualcosa di simile nel tuo 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);

Si costruisce così un controllo a livello di programmazione, quindi aggiunge alla collezione controlli sulla testa, che renderà come quello che si vuole, alla fine del tag head. Problema di questo è che la sua un po 'più di lavoro, e il suo meglio evitare monkeying con le collezioni di controllo a livello di codice dietro se si può farla franca.

Altri suggerimenti

Ciò potrebbe rendere le cose un po’ più complicate del necessario.Hai provato semplicemente a usare ~ nel percorso dell'icona e nell'impostazione <head runat="server">?

Per esempio:

<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>

Risposta SO correlata: Favicon non visualizzata

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top