在禁用的Panel中未禁用ASP.NET自定义服务器控件

时间:2013-01-25 05:23:35

标签: c# asp.net custom-server-controls

我编写了一个自定义的ASP.NET服务器控件。当我渲染控件时,我检查this.Enabled属性以确定是否应该将disabled属性添加到我的标记中(下面的代码提取)。除非我专门设置Enabled标志,否则该值为True,无论其所在面板的状态如何。

output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
if (!this.Enabled)
{
    output.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
}
output.AddAttribute(HtmlTextWriterAttribute.Value, this.DisplayName);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();

标准服务器控件(如文本框等)在此方案中的行为与预期相同,并且已禁用。

为了能够检查控件是否实际被禁用,我必须实现的模式是什么?您是否必须检查父母以查看他们中的任何一个是否是Panel,然后查看它们是否已启用?如果是这种情况,似乎效率非常低。

由于 标记

1 个答案:

答案 0 :(得分:1)

刚刚找到它。

需要将代码修改为:

output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
if (!this.IsEnabled)
{
    output.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
}
output.AddAttribute(HtmlTextWriterAttribute.Value, this.DisplayName);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();