Почему атрибут runat в head-теге меняет способ обработки метатегов в ASP.NET? - PullRequest
1 голос
/ 24 мая 2009

Пример 1:

<head>
  <meta http-equiv="description" content="<%= Foo %>"/>
</head>

Оказывает

<meta http-equiv="description" content="Bar"/>

Пример 2:

<head runat="server">
  <meta http-equiv="description" content="<%= Foo %>"/>
</head>

Визуализирует:

<meta http-equiv="description" content="&lt;%= Foo %>"/>

Обратите внимание на расхождение, < стало &lt;, но > остается тем же.

Есть несколько вопросов на эту тему, и ответы - обходные пути, но никто, кажется, не знает, почему это происходит.

Ответы [ 2 ]

4 голосов
/ 24 мая 2009

Вы не можете иметь тег скрипта (<% =%>) внутри серверного элемента управления, поэтому он вместо обычного текста превращается в простой текст.

Вы можете добавить метатег из кода ниже так:

HtmlMeta meta = new HtmlMeta();
meta.HttpEquiv = "description";
meta.Content = Foo;
Page.Header.Controls.Add(meta);
1 голос
/ 24 мая 2009

Когда вы добавляете runat = server, тег Head становится серверным элементом управления. На основании ваших результатов я предполагаю, что содержимое серверных элементов управления не анализируется для встроенных замен с использованием синтаксиса <% ...%>.

Вы также можете сделать метатег серверным элементом управления, добавив к нему сервер runat = и программный доступ к его атрибутам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...