文本框呈现为标签

时间:2014-07-15 22:17:25

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

我创建了一个自定义Web服务器控件,它将具有bool属性' RenderAsLabel'这样我就可以将文本框转换为标签,用于只读表单。我想知道为什么这段代码不安全或按预期工作有任何理由。经过初步测试似乎很好,但我只是想确保我没有做一些最终导致问题的事情。

namespace OrmControlLibrary
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:OrmTextBox ID='' runat=server ></{0}:OrmTextBox>")]
    public class OrmTextBox : TextBox
    {
        private Label lbl;
        public virtual bool RenderAsLabel
        {
            get
            {
                if (ViewState["OrmTextBox"] == null)
                {
                    return false;
                }
                else
                {
                    return (bool)ViewState["OrmTextBox"];
                }
            }
            set
            {
                ViewState["OrmTextBox"] = value;
            }
        }

        protected override void Render(HtmlTextWriter w)
        {
            if (RenderAsLabel)
            {
                SetLabelProperties();
                lbl.RenderControl(w);
            }
            else
            {
                base.Render(w);
            }
        }

        private void SetLabelProperties()
        {
            lbl = new Label();
            lbl.ID = this.ID;
            lbl.CssClass = this.CssClass;
            lbl.Text = this.Text;
        }
    }
}

0 个答案:

没有答案