我正在开发一个 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 修改渲染 - 如果它是真的,它应该渲染,例如:
<fb:name uid="10300399458"></fb:name>
当它为 false 时,它应该使用自关闭标签呈现:
<fb:name uid="10300399458" />
我可以让“真”条件几乎正常工作,但自闭合标签似乎与 Renderset 方法不兼容。不幸的是,如果是这种情况,这也意味着 AddAttributesToRender 模式也不起作用。它实际产生的是这样的:
<fb:name uid="10300399458">
</fb:name>
如何获取 HtmlTextWriter(或我需要使用哪个 HtmlTextWriter)以使其呈现自闭合标签?或者,至少,我怎样才能让它不渲染那个中间空间(这样开始和结束标签就紧挨着)?