Проблема Resulturl на главной странице
-
24-09-2019 - |
Вопрос
Хорошо,
Я знаю, что это странно, но когда я положил этот код между <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>
Связанный так ответ: Фавикон не показан