当前位置:  开发笔记 > 编程语言 > 正文

从Control派生的ASP.NET自定义控件中渲染自闭合标记

如何解决《从Control派生的ASP.NET自定义控件中渲染自闭合标记》经验,为你挑选了2个好方法。

我正在开发一个Facebook FBML控件库,并希望创建我的FBML控件,有点像ASP.NET WebControls库.我有一个默认处理渲染的基类; 这是我的渲染方法:

        protected override void Render(HtmlTextWriter writer)
        {
            AddAttributesToRender(writer);

            if (UseXfbmlSemantics)
            {
                writer.RenderBeginTag(ElementName);
                writer.EndRender();
                writer.RenderEndTag();
            }
            else
            {
                writer.RenderBeginTag(ElementName);
                writer.RenderEndTag();
            }
        }

我想要的是基于UseXfbmlSemantics修改渲染 - 如果它是真的,它应该渲染,例如:

当它为假时,它应该使用自闭标签呈现:

我可以让"真实"条件几乎正确地工作,但自动关闭标签似乎与Render-方法集不兼容.不幸的是,如果是这种情况,它也意味着AddAttributesToRender模式也不起作用.它实际产生的是:

        

        

我怎样才能获得HtmlTextWriter(或者我需要使用哪个HtmlTextWriter)来使它呈现自闭标签?或者,至少,我怎样才能使它不呈现临时空间(以便开始和结束标签紧挨着彼此)?



1> Tony..:

由于这是搜索"HtmlTextWriter自闭标签"时出现的最重要的问题,因此这对于想要知道如何操作的人来说是这样的:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);



2> Jason Hernan..:

这应该让你去 - 它将呈现为.您还可以覆盖RenderBeginTag,RenderContents和RenderEndTag.根据您正在做的事情,您可能需要在RenderControl中进行其他一些操作.你也可以考虑使用ControlAdapter,这可能会让你更好地分离控制功能VS控制html写作.

public  class FbName:System.Web.UI.WebControls.WebControl
{

    protected override string TagName
    {
        get
        {
            return "fb:name";
        }
    }

    public override void RenderControl(HtmlTextWriter writer)
    {  
        RenderBeginTag(writer);// render only the begin tag.
        //base.RenderContents(writer);
        //base.RenderEndTag(writer);
    }

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.Write("<" + this.TagName);
        writer.WriteAttribute("uid", "00101010101");
        writer.Write("/>");

    }
}

-Jason

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有