ASP.NET 密码文本框






4.42/5 (19投票s)
2007年3月21日
1分钟阅读

218320

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。感谢大家的良好反馈!