Asp.net разделитель <% заменен на <% в теге head?


Может быть, это глупый вопрос, но у меня есть эта проблема в Visual Studio 2010:

На главной странице у меня есть такой код:

<head runat="server">

    <title>App Title</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    <link href="<%= App.RootPath %>Css/style.css" rel="stylesheet" type="text/css" />
</head>

По какой-то странной причине <% изменяется во время выполнения с &lt;%

<%= App.RootPath %> работает нормально, если положить в любом месте за пределами головы тега.

Кто-нибудь никогда не испытывал этого и не решался?

Обновление:

Если я отложу runat= "server" в теге head, это сработает. Но мне это нужно.

Правка:

Все эти методы работают, но проблема заключается в отсутствии поддержки дизайнера?

5 3

5 ответов:

Объяснение вашего трюка:

<link <%= "href='" +App.RootPath +"Css/style.css'" %> rel="stylesheet" type="text/css" />

Чтобы найти ответ, создайте исключение компиляции. Измените App.RootPath на App.RootPaths.., затем перейдите к исходному коду (он будет показан на странице ошибок). Если компилятор соответствует чему-то вроде <link href='' rel='' >, то он сгенерирует код для построения соответствующего экземпляра HtmlLink. Вот почему он анализирует <%= как литеральную строку и после этого кодирует ее.

Ваш трюк обманывает компилятор, что совсем неплохо.

Я верю, что это так. то же самое и для метатегов, (HtmlMeta)

На данный момент я нашел этот workaroud; все еще ищу причину такого поведения.

<link <%= "href=" +App.RootPath +"Css/style.css" %> rel="stylesheet" type="text/css" />

Это тоже должно сработать.

<link href="<%= App.RootPath + "Css/style.css" %>" rel="stylesheet" type="text/css"/>

Я обычно использую ResolveUrl:

<link href='<%= Page.ResolveUrl("~Css/style.css") %>' rel="stylesheet" type="text/css"/>
**problem**
 <link rel="canonical" href="http://www.kayserianadoluhaber.com.tr/haber/<%=kanonikal%>" />

**solved**
 <link rel="canonical" href="http://www.kayserianadoluhaber.com.tr/haber/<%=kanonikal+""%>" />