RenderControl 메서드에 이상한 문제가 있습니다.RenderControl 메서드가 자동 닫기 태그를 렌더링하지 않습니다.
I이 마크 업으로의 UserControl (AN ASCX 파일)가이 코드를 정상적인 페이지주기에서 실행하는 경우. (이 페이지에 추가 할 때 등)
가<ul>
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<li>
<a href="<%# ((Image)Container.DataItem).Url %>">
<img src="<%# ((Image)Container.DataItem).Url %>?mw=80&mh=50" title="<%# ((Image)Container.DataItem).Title %>" alt="<%# ((Image)Container.DataItem).Alt %>" />
<p><%# ((Image)Container.DataItem).Description %></p>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
그것이 유효한 XHTML 렌더링을 마크 업 :
p 태그에는 비어있는 경우에도 닫기 태그가 있고 이미지 태그에도 닫는 태그가 있습니다.
나는 서버에서이 컨트롤을 인스턴스화 사용하여 문자열로 구문 분석 할 때이 같은 RenderControl() 메소드 :이 같은
StringBuilder builder = new StringBuilder();
using (StringWriter writer = new StringWriter(builder))
{
using (XhtmlTextWriter htmlWriter = new XhtmlTextWriter(writer))
{
var control = (GalleryControl)LoadControl("~/layouts/Controls/Gallery/GalleryControl.ascx");
control.Images = m_images;
control.RenderControl(htmlWriter);
}
}
return builder.ToString();
그런 다음 XHTML 반환 외모 :
<ul>
<li>
<a data-fullscreen="/someimage.jpg" href="/another-image.jpg">
<img src="/myimage?mw=80&mh=50" title="Image Title" alt="Alt Text">
<p>
</a>
</li>
</ul>
이미지 태그에 닫기 태그가 누락되어 있고 p 태그도 닫히지 않으므로이 XHTML이 더 이상 유효하지 않습니다.
저는 하루 종일 보냈습니다. HtmlTextWriter 대신 XhtmlTextWriter를 사용하여 RenderControl에 전달하려고했으나 아무런 차이가 없었습니다.
다른 누구도이 문제를 겪어 본 적이 있습니까? 그것은 아주 기괴하다. 그리고 지금 당황하게하게되는 팀에서 우리의 제비 뽑기가있다! 어떤 도움이나 아이디어라도 감사 할 것입니다.
편집 :이 코드는 Sitecore 프로세서 스택에서 실행되고 있음을 나는 아마 언급해야
. ExpandLinks 프로세서 바로 앞에있는 "renderField"프로세서 스택에서 실행됩니다.
@Sam을 다음'RenderControl' 방법은'Control' 클래스에서 상속됩니다. –
여기에 나와있는 것과 거의 같은 솔루션을 만들었으므로 동일한 오류를 재현 할 수 없습니다. 출력되는 HTML이 유효합니다. 그 리피터의 바인딩이 그 방법으로 이미지 세터에서 일어나고 있다고 가정합니까? 그 "데이터 - 전체 화면"은 어디에서 오는 것입니까, 당신은 분명히 우리에게 builder.ToString()이 리턴하고 있습니다, 자바 스크립트 간섭이 일어나기 전에? – Kasaku
예, builder.ToString()에서 반환 된 텍스트를 가져 와서 여기에 붙여 넣었습니다. 나는 거기에 뭔가 덤비는 것이있을 수도 있지만 이것이 HtmlTextWriter에 첨부 된 StringBuilder에서 반환되는 방법이라고 생각했습니다. – NullReferenceException