Встроенный код в главном теге - ASP.NET

Можно ли сделать что-то подобное в главном теге, главной страницы, которая имеет runatserver:

 <link rel="Stylesheet" type="text/css" href='<%=Config.ResourcesDomain %>/images/style.css' />

Это не работает, поскольку он создает такой тип html:

<link rel="Stylesheet" type="text/css" href="&lt;%=Config.ResourcesDomain %>/images/style.css" />

Ответ 1

Причина, по которой вывод выводится следующим образом:

href="&lt;%=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();
}

Привет