私の目標は、子ページの要素のクラスを定義できるようにすることです。私のマスターページには次のものがあります。
<body class="<myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>">
はAttributePlaceHolderから派生しContentPlaceHolder、その内容から改行と余分なスペースを取り除きます。AttributePlaceHolder説明する問題は、 を通常の に変更するときにも発生しますContentPlaceHolder。
上記のコードは機能せず、次のエラーが発生します。
マスター ページ '/Views/Shared/Site.Master' に ContentPlaceHolder 'BodyCssClass' が見つかりません。コンテンツ ページでコンテンツ コントロールの 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 解析エンジンに関係していると思いますが、その場合、バグまたは「機能」と呼ぶべきでしょうか?