2009-06-11 4 views
1

내 목표는 하위 페이지의 요소에 대한 클래스를 정의 할 수 있다는 것입니다. 내 마스터 페이지에서 I는 다음과 같습니다이 ContentPlaceHolder 동작을 이해해야합니까?

<body class="<myown:AttributePlaceHolder runat="server" ID="BodyCssClass"/>"> 

AttributePlaceHolderContentPlaceHolder에서 파생를, 단지 그것의 내용에서 어떤 바꿈 및 여분의 공백을 제거합니다. 또한 설명 할 문제는 을 보통 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"> 

편집
요한에 의해 지적 된 다음은 또한 작동합니다 :

큰 따옴표를 하나의 것으로 변경합니다.

그러나 내 html보다는 작은 따옴표로 표시됩니다. 나를 미치게하지만, 그게 내게 상처를줍니다 ...

ASP.NET 파싱 엔진과 관련이 있다고 생각합니다.이 경우 버그 또는 "기능"이라고해야합니까?

<body class='<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server">ms-areaseparator</asp:ContentPlaceHolder>' ... > 
+0

작은 따옴표가있는 곳을 바꿀 수 없습니까? –

+0

실제로 작동해야합니다. 그것은 당신이 "dohhh"로가는 것들 중 하나입니다. 어쨌든 여전히 동작을 설명하지 않습니다. – Gidon

+0

아니요, 한 번에 정말로 이해가되지 않지만, 그것에 대해 생각한다면; 다른 큰 따옴표 쌍 안에 큰 따옴표가있는 경우 이스케이프 처리하거나 따옴표를 바꾸기 위해 변경하지 않은 경우 작동합니까? 그래서 그것은 의미가 있습니다. 그러나 다른 방법으로는 그렇지 않습니다. .. –

답변

1

u없이 출력 할 때 큰 따옴표를 사용할 수도 있습니다 따옴표 설정을 반대로하여 서버 태그를 노래 : 장소 홀더의

<body class="<myown:AttributePlaceHolder runat='server' ID='BodyCssClass'/>">

RUNAT 및 ID 속성이 인용 하나입니다. 왜 서버 태그가 원래의 코드가 작동하는지에 관해서는 파싱 엔진 내부의 악마 만이 알고있는 것입니다 ...

1

이 같은 시도?당신의 aspx 페이지에서

는 다음과 같은 마크 업을 생성하면

HtmlBody.Attributes.Add("class", "your-css-class-name"); 

을 원하는 속성을 설정할 수 있습니다 뒤에 서버 개체를 코드에서 다음

<body runat="server" id="HtmlBody"> 

로 body 태그를 설정 한

<body id="ctl00_HtmlBody" class="your-css-class-name"> 
+0

내 업데이트에 대한 답변을 추가했습니다. – Gidon

0

당신이 이것에 대해 생각 해본 적이 :

+0

비록 내가 텍스트에 언급하지 않았지만 나는 MVC로 태그를 붙였습니다. 따라서 나는 코드가 없으며 컨트롤러에 클래스 이름을 설정하고 싶지 않습니다. 뷰에 클래스 이름을 설정해야합니다. – Gidon

관련 문제