Моя цель - определить класс для элемента на дочерней странице. На моей главной странице я имею следующее:Должен ли я понимать это поведение ContentPlaceHolder?
<body class="<myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>">
AttributePlaceHolder
производный от ContentPlaceHolder
и просто обрезает любые переносы строк и лишние пробелы из его содержания. Проблема, которую я опишу, также возникает при смене AttributePlaceHolder
на нормальный ContentPlaceHolder
.
Теперь вышеизложенное кусок кода не работает, и в конечном итоге в следующей ошибки:
Cannot find ContentPlaceHolder 'BodyCssClass' in the master page '/Views/Shared/Site.Master', verify content control's ContentPlaceHolderID attribute in the content page
При изменении выше строки кода в:
<body class="<% %><myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>">
Это делает работа (обратите внимание на добавленный <% %>
).
Это трюк, просто интересно, не хватает ли я чего-то здесь.
Только для дополнительной информации, в своих дочерних страниц я могу написать:
<asp:Content ContentPlaceHolderID="BodyCssClass" runat="server">profile-edit someotherclass another-class</asp:Content>
или даже:
<asp:Content ContentPlaceHolderID="BodyCssClass" runat="server">profile-edit
someotherclass
another-class
</asp:Content>
и это будет красиво напечатано, как:
<body class="profile-edit someotherclass another-class">
Редактировать
As po заключенный Йоханом также работает:
<body class='<myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>'>
Изменяет двойные кавычки на отдельные.
Но мой html также будет отображаться с одинарными кавычками. Назовите меня сумасшедшим, но это только больно мне ...
Я предполагаю, что это связано с механизмом синтаксического анализа ASP.NET, в этом случае мы должны называть его ошибкой или «функцией»?
Не могли бы вы просто изменить, где находятся одиночные кавычки?
–Это действительно должно работать. Это одна из тех вещей, которые вы делаете «доххх». В любом случае все еще не объясняет поведение. – Gidon
Нет, сразу это не имеет никакого смысла, но если вы думаете об этом; когда есть двойные кавычки внутри другой пары двойных кавычек, когда-либо работавших, не ускользая или не меняя их на котировки? Таким образом, это имеет смысл, но по-другому это не так. –