首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不呈现自关闭标记的RenderControl方法

不呈现自关闭标记的RenderControl方法
EN

Stack Overflow用户
提问于 2011-09-28 15:36:31
回答 1查看 919关注 0票数 6

RenderControl方法有一个奇怪的问题。

我有一个带有这个标记的UserControl (一个ASCX文件):

代码语言:javascript
复制
<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呈现为标记:

代码语言:javascript
复制
<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></p>
        </a>
    </li>
</ul>

注意p标记是如何具有结束标记的(即使它是空的),图像标记也有一个结束标记。

当我在服务器上实例化此控件并尝试使用RenderControl()方法将其解析为字符串时,如下所示:

代码语言:javascript
复制
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如下所示:

代码语言:javascript
复制
<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不再有效。

我花了一整天时间在这上面。我尝试过使用XhtmlTextWriter而不是HtmlTextWriter来传递给RenderControl,但是这并没有什么区别。

还有其他人遇到过这个问题吗?这是相当奇怪的,我们有很多人在团队中遇到困难的时候!任何帮助或想法都将不胜感激。

编辑:

我可能应该提到,这段代码是在Sitecore处理器堆栈中执行的。它运行在"renderField“处理器堆栈中,就在ExpandLinks处理器之前。

EN

回答 1

Stack Overflow用户

发布于 2011-10-04 02:38:39

我怀疑这一行没有执行,或者抛出和吞没了一个异常,不允许它完成:

代码语言:javascript
复制
<%# ((Image)Container.DataItem).Description %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7585729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档