ASP.NET - 当 Enabled=False 时将文本框交换为标签
题
设置:具有大量 TextBox 控件的 Web 表单。
当我将 TextBox 控件的任一 Enabled 属性设置为 False 时,我想在运行时将该 TextBox“交换”为标签。这里的想法是,如果它是只读的,就不要在设计用于编辑的控件中显示它。
我认为这应该非常简单且可重用,但是最好的方法是什么?
解决方案
不知道它的最好的方式,我会做一个自定义服务器控件是一个文本框,
然后覆盖render方法,检查它是否是只读的,
如果读它才使你的跨度标签,如标签控件一样。
如果不然后让碱(文本框)渲染接管...
public class SpecialTextbox : TextBox
{
public override void RenderControl(HtmlTextWriter writer)
{
if (!this.ReadOnly)
{
base.RenderControl(writer);
}
else
{
writer.Write(string.Format("<span id=\"{0}\" class=\"{1}\">{2}</span>",
this.ClientID,
this.CssClass,
this.Text));
}
}
}
其他提示
一种可能的解决方案是创建一个新的延伸的控制文本框。然后,您的专门控制会覆盖呈现代码(部分),使控制呈现类似于标签时只读=真。
另一种方法是考虑使用控制适配器。您基本上可以执行与 BigBlondeViking 推荐的完全相同的操作,但您可以继续在代码中使用常规的 asp:textbox 控件。这对您和其他开发人员来说会容易得多。
不隶属于 StackOverflow