ASP.NET MVC2 Master Page - серверный скрипт не рендерится, экранирование первой скобки - PullRequest
4 голосов
/ 11 сентября 2010

У меня есть главная страница, которую я использую в качестве шаблона, чтобы позволить мне определять метатеги для каждой страницы. Моя главная страница берет модель, которая содержит метаданные, вот пример того, что я пытаюсь сделать следующее:

<meta name="description" content="<%= Model.description %>" />
<meta name="keywords" content="<%= Model.keywords %>" />

Однако, когда я проверяю HTML после отображения страницы, я получаю следующее:

<meta name="description" content="&lt;= Model.description %>" />
<meta name="keywords" content="&lt;= Model.keywords %>" />

Если я удалю внешние кавычки из содержимого, например, content=<%= Model.description %> отображает данные. Кажется, ему не нравятся окружающие кавычки.

Это ошибка с мастер-страницами? Если это так, что будет лучшим альтернативным решением этой проблемы? Если нет, то что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 11 сентября 2010

Я видел это раньше, и это боль. Возможно, у вас есть атрибут runat = "sever" в вашем теге head, например:

<head runat="server">

если вы только что сделали это:

<head>

тогда вы не должны видеть это поведение.

2 голосов
/ 11 сентября 2010

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

<%= string.Format("<meta name=\"description\" content=\"{0}\" />", Model.description) %> 
<%= string.Format("<meta name=\"keywords\" content=\"{0}\" />", Model.keywords) %> 

РЕДАКТИРОВАТЬ: Это не проблема, характерная для MasterPages.Я уже публиковал подобный вопрос здесь, на SO, спрашивая об этом, и если вы прочитаете принятый ответ, вы увидите, что у фреймворка есть специальный код для различных элементов в теге head, где он будет иметь немного другой формат рендеринга и будет кодироватьданные.

ASP.NET Webform CSS-ссылка искажается

...