我有一个 ASP.NET
TextBox
,其中 TextMode
设置为 MultiLine
。 TextBox
的内容应显示为密码而不是纯文本。
无法同时将
TextMode
设置为 Password
和 MultiLine
。有没有其他方法可以实现这一目标?
你必须在这里做出一些“妥协”。
因此,当用户键入时,您不会看到“*”,但他们也不会看到他们键入的内容。
因此,放入一个文本框,设置 mode =“多行”,从而得到此标记:
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"
style="color: transparent;text-shadow: 0 0 8px rgba(0,0,0,0.5);"
Height="213px" Width="307px"
></asp:TextBox>
所以,我们给文本添加了模糊效果,结果实际上相当不错:
例如这个:
如果你不妥协一点,那么你可以找到一些“混乱”的 JavaScript 解决方案。然而,我认为上面的方法有效并且看起来和带有“*”的密码框一样好/漂亮。
还有这样的文本框?好吧,我不知道为什么有人想要这个(也许是一个发送一些秘密消息的屏幕)。
所以,尝试上面的方法,我认为这是一个“合理”的解决方案。
我认为在不找到低级解决方案的情况下,没有一种不平凡的方法可以实现这一目标。
当您将
TextBox.TextMode
设置为 Password
时,会出现 <input type="password"/>
当您将
TextBox.TextMode
设置为 MultiLine
时,会出现 <textarea/>
HTML 元素呈现给客户端。
问题在于
TextArea
HTML 元素不支持密码字符。但有一个合理的解决方法:使用CSS样式模糊TextBox
字符。首先将一个新项目(Web Forms Server Control)添加到您的项目中并对其进行修改,使其看起来像:
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestAspNetWebApp
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:SecretTextArea runat=server></{0}:SecretTextArea>")]
public class SecretTextArea : TextBox
{
public SecretTextArea()
{
TextMode = TextBoxMode.MultiLine;
Attributes.CssStyle.Add("color", "transparent");
Attributes.CssStyle.Add("text-shadow", "0 0 4px rgba(0,0,0,0.5)");
Text = "This is a semi-secret text.";
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}
构建您的项目。将
SecretTextArea
控件从 VS Toolbox 拖放到 Web 表单中。结果是:
这种模糊方法的优点是可以查看和编辑文本。您还可以通过更改
px
属性中的 text-shadow
值来设置模糊量。