65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 密码文本框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.42/5 (19投票s)

2007年3月21日

1分钟阅读

viewsIcon

218320

downloadIcon

2048

一个在回发后能够保留密码,并且可以以编程方式设置的密码文本框。

引言

在使用 ASP.NET 时,默认的密码模式(TextMode="Password")下的文本框具有以下限制:

  • 无法设置密码(例如:tbPassword.Text = "123";
  • 密码在回发后不会被恢复

这两个限制在安全方面是完全合理的。然而,有时上述行为并非期望(尤其是在开发期间)。

新的 PasswordTextBox 控件是标准 ASP.NET TextBox 的扩展,它使密码文本框的行为像一个普通的文本框。

使用代码

代码本身非常简单明了

    public class PasswordTextBox : TextBox
    {
        public PasswordTextBox()
        {
            TextMode = TextBoxMode.Password;
        }

        public override string Text
        {
            get
            {
                return base.Text;
            }
            set
            {
                base.Text = value;

                Attributes["value"] = value;
            }
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            Attributes["value"] = Text;
        }
    }

要使用此代码,只需将 PasswordTextBox.dll 放入您的 Web 应用程序的 /bin 目录中,或在 Visual Studio 中添加对其引用。

ASP.NET 2.0 提供了一种简洁明了的方式来为您的 aspx 页面注册控件:只需将以下内容添加到您的 web.config 文件中

    <pages>
        <controls>
            <add tagPrefix="opp" assembly="PasswordTextBox" namespace="opp"/>
        </controls>
    </pages>

现在,您可以像这样使用 PasswordTextBox

<opp:PasswordTextBox id="tbPassword" runat="server" />

关注点

要设置 PasswordTextBox 的值,重写了 Text 属性,并通过 "value" 属性设置值。

为了在回发后恢复 PasswordTextBox 的值,在 OnPreRender 事件中检索该值,并通过 "value" 属性设置它(感谢 jackmos 提供的更巧妙的解决方案)。

历史

  • V1.0 发布于 2007-03-21。
  • V1.1 发布于 2007-03-31。感谢大家的良好反馈!
© . All rights reserved.