Вопрос

Хорошо,

Я знаю, что это странно, но когда я положил этот код между <head runat="server"></head> В Master.page, вот как он оказывает:

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

Это не видит чего-то, что ASP.NET нужно позаботиться о.

Это оригинальный код:

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

В основном ASP.NET не заботится о коде ниже и отображает нормальный HTML.

Как я могу преодолеть эту проблему?

Заранее спасибо...

Редактировать и разрешаться

Хорошо, люди, нет никакого способа сделать это. Я наконец выяснил, потому что Resulleurl или ResolveClienturl работают только на них:

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

Это слишком буквальный для ссылки, поэтому вам нужно поставить элементы ссылки в тегу тела, как:

<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>
Это было полезно?

Решение

Итак, причина, по которой вы столкнулись с вашим первым вопросом, было потому, что тег ссылки имел runat="server" Это позволяет ASP.NET относиться к нему как управление сервером, а не буквальным. Потому что его управление сервером, ваша бирка сценария (<%= %>) На самом деле ничего не делает, поскольку его свойство управления сервером, оно относится к нему как буквальный текст.

Есть два способа справиться с этим. Во-первых, ClientScriptManager Чтобы зарегистрировать скрипт запуска. Это поместит свой тег ссылки внутри тела, что такое так, как Microsoft говорит, что вы должны сделать это, но эстетически не так приятно. Другой вариант - сделать что-то вроде этого в вашей странице_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);

Это разработает контроль, а затем добавляет его в коллекцию элементов управления на голове, что будет отображаться как вы хотите в конце тега головки. Проблема с этим заключается в том, что ее немного больше работы, и его лучше избегать обезьян с контрольными коллекциями в коде за уровнем, если вы можете сойти с ним.

Другие советы

Это может сделать это немного сложнее, чем должно быть. Вы пытались просто использовать ~ в пути иконы и настройки <head runat="server">?

Например:

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

Связанный так ответ: Фавикон не показан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top