使用空属性呈现WebControl

时间:2013-12-12 13:29:46

标签: c# asp.net

是否可以构建一个源自System.Web.UI.WebControls.WebControl的控件,允许“空”属性?

即。我需要输出<div helloworld></div>

我已尝试覆盖RenderEndTag()this.Attributes.Add("helloworld",null),但都无法正常工作。

2 个答案:

答案 0 :(得分:0)

没有。在ASP.NET Web表单中用于控件解析的语法要求属性必须具有值。

你能做的最好的事情就是使用内在的内容:

<asp:Label runat="server" id="fooLabel" Text="Hello, world!"/>

相同
<asp:Label runat="server" id="fooLabel">Hello, world!</asp:Label>

答案 1 :(得分:0)

看得更深一点,以下代码有效;

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
   writer.AddAttribute("helloworld", null);
}

在写入属性的中间向下反映System.Web.UI.HtmlTextWriter.RenderBegin()显示以下行:

...
this.writer.Write(' ');
this.writer.Write(renderAttribute.name);
if (renderAttribute.value != null)
{
this.writer.Write("=\"");
...

这说明了上述原因,this.Attributes.Add没有(我认为运行过滤器以排除任何空属性值)。