Моя цель - определить класс для элемента на дочерней странице. На моей главной странице у меня есть следующее:
<body class="<myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>">
* * * * * * * * * * * * * * * * * * * * * * * * * * AttributePlaceHolder
* * * * * * * * * * * * * * *1004* и просто удаляет любые разрывы строк и лишние пробелы из его содержимого Проблема, которую я опишу, также возникает при замене AttributePlaceHolder
на обычный ContentPlaceHolder
.
Теперь указанный выше фрагмент кода не работает и приводит к следующей ошибке:
Не удается найти ContentPlaceHolder
BodyCssClass на главной странице
'/Views/Shared/Site.Master', проверьте
ContentPlaceHolderID элемента управления контентом
атрибут на странице содержимого
При изменении вышеуказанной строки кода на:
<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">
Редактировать
Как отметил Йохан, также работает следующее:
<body class='<myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>'>
Изменяет двойные кавычки на одинарные.
Но, кроме того, мой html также будет отображаться в одинарных кавычках. Называй меня сумасшедшим, но это только ранит меня ...
Полагаю, это связано с механизмом синтаксического анализа ASP.NET, в этом случае мы должны назвать это ошибкой или "функцией"?