Встроенный код в главном теге - ASP.NET
Можно ли сделать что-то подобное в главном теге, главной страницы, которая имеет runatserver:
<link rel="Stylesheet" type="text/css" href='<%=Config.ResourcesDomain %>/images/style.css' />
Это не работает, поскольку он создает такой тип html:
<link rel="Stylesheet" type="text/css" href="<%=Config.ResourcesDomain %>/images/style.css" />
Ответы
Ответ 1
Причина, по которой вывод выводится следующим образом:
href="<%=Config.ResourcesDomain %>/images/style.css"
Это потому, что ASP.NET рассматривает ссылку как элемент управления HtmlLink
и отображает содержимое атрибута href
как литерал.
Это странная причуда маркировки раздела главы как серверного элемента управления, где определенные элементы рассматриваются как элементы управления сервером (даже без явного указания атрибута runat="server"
).
Удаление цитат вокруг атрибута href устраняет проблему:
href=<%= Config.ResourcesDomain %>/images/style.css
Это приводит к тому, что элемент ссылки обрабатывается как серверный элемент управления, тем самым выполняя блок кода и отображая правильный URL.
Однако выше выписывает значение href
вне кавычек. Используя следующее, добавьте кавычки в тег ссылки:
href=<%= String.Format("'{0}'", Config.ResourcesDomain) %>/images/style.css
Надеюсь, что это поможет.
Edit
Странно, если вы используете двойные кавычки для атрибута href
и включаете двойные кавычки в кодовый блок, это также устраняет проблему:
href="<%= "" + Config.ResourcesDomain %>/images/style.css"
Однако ни одно из вышеперечисленных элементов не является особенно элегантным решением, а настройка URL-адреса из кода позади - это, вероятно, путь.
Ответ 2
Другое решение, которое я нашел здесь: fooobar.com/questions/19834/... -
просто введите код внутри PlaceHolder:
<asp:PlaceHolder runat="server">
... your code with <%= %> tags ...
</asp:PlaceHolder>
Ответ 3
размеченный
<head>
<asp:Literal ID="litHead" runat="server" />
</head>
фоновый кода:
на странице_load
litHead.Text = "<link rel='Stylesheet' type='text/css' href='" + Config.ResourcesDomain + "/images/style.css' />";
Update:
сделайте это, тогда
<head runat="server">
<%
Response.Write("<link rel='Stylesheet' type='text/css' href='" + Config.ResourcesDomain + "/images/style.css' />");
%>
<title></title>
</head>
Ответ 4
измените его на
<link rel="Stylesheet" type="text/css" href='<%Response.Write(Config.ResourcesDomain); %>/images/style.css' />
Он должен работать
Ответ 5
Удалить атрибут runat = "server" в теге открытия заголовка.
Таким образом, встроенный код asp.net правильно отображается.
Ответ 6
Или сделайте что-нибудь вроде этого:
<head>
<style type="text/css">
@import "<%= ResolveUrl("~/content/styles.css") %>";
@import "<%= ResolveUrl("~/content/print.css") %>" print;
</style>
</head>
Ответ 7
По-видимому, привязка данных требуется при использовании встроенного тега "<% #% > ".
<head id="Head">
//Stuff with inline code
</head>
Код за:
protected void Page_Load {
Head.DataBind();
}
Привет