【问题标题】:Password-Box not showing any content密码框不显示任何内容
【发布时间】:2011-01-13 08:26:06
【问题描述】:

我有一个需要用户输入密码的小型网络解决方案。我有两个输入框

<input type="password" runat="server" id="m_txtPassword1"/>

如果我像这样为控件的 Value-property 设置一些字符:

m_txtPassword1.Value="someChars";

密码框显示为空。没有显示项目符号。如果我查看渲染的 html 源代码,也没有渲染任何值标签。如果我将类型更改为

<input type="text" runat="server" id="m_txtPassword1"/>

显示字符。这是设计使然吗?如何禁用此功能?
请注意,我不想将真正的密码放入值属性中,我只想向用户显示已经设置了密码,这是 IMO 在输入控件中使用 8 个项目符号时做得最好的。但为此,我需要设置控件的值属性。

更新

对于所有人来说,有同样的问题:我试图用同样的结果声明&lt;asp:textbox id="m_txtPassword1" runat="server" TextMode="Password" /&gt;m_txtPassword1.Attributes["value"]="someChars" 也没有帮助。

看来这确实是不可能的。

作为一种解决方法,我将密码框声明为没有 runat="server" 的纯 html,并在标记中设置了 value-property(通过代码隐藏中的两个属性)。不好,但我真的想向用户展示他已经输入了密码。
另一种解决方法是在加载时通​​过 javascript 设置值。

【问题讨论】:

    标签: asp.net asp.net-membership webforms


    【解决方案1】:

    这是默认设置。您不能设置密码。

    【讨论】:

    • +1 谢谢。我会等到明天,也许有人知道禁用此功能的可能性,否则我会接受您的回答。
    • 您可以在客户端使用 Javascript 添加一些内容。但考虑到大多数浏览器会自动填充密码字段,我不会那样做。它使用户感到困惑。
    【解决方案2】:

    我做到了,

    <html>
    <head>
    <script type="text/javascript">
    function alertValue()
    {
    alert(document.getElementById("password1").value);
    }
    function setpassword()
    {
       password1.value="someChars";
    }
    </script>
    </head>
    <body>
    
    <form>
    <input type="password" id="password1" value="" />
    <input type="button" id="button1" onclick="alertValue()" value="Show default value" />
    <input type="button" id="button2" onclick="setpassword()" value="Set value" />
    
    </form>
    
    </body>
    </html>
    

    试试这个: http://jsbin.com/ocexo5

    【讨论】:

    • +1 谢谢,是的,它类似于我所做的解决方案,看看我的解决方法。但是我的问题是,如果可以使用 MS-controls (runat=server),不要进行黑客攻击。
    【解决方案3】:

    出于安全原因,这是设计使然 - 密码不在 纯文本格式的 HTML。

    现在,您可以编写 javascript 来设置文本框的 value 属性 在客户端,当然这仍然意味着你有密码 HTML 中的纯文本。

    这是页面示例:

    标记:

    <script type="text/javascript">
    function setPwd()
    {
        var Pwd = "<%=Pwd %>";
        var txtText = document.getElementById("MainContent_txtText");
        txtText.value = Pwd;
     }
    </script>
    <input type="password" id="txtText" runat="server"/>
    

    还有代码隐藏:

    public partial class _Default : System.Web.UI.Page
        {
            public string Pwd;
            protected void Page_Load(object sender, EventArgs e)
            {
    
                Pwd = "password";
                ClientScript.RegisterStartupScript( this.GetType(),"somescript","setPwd();",true); 
            }
        }
    

    【讨论】:

    • +1 谢谢,是的,我也认为这是一种可能性,但是我更喜欢没有客户端脚本的解决方法,这样所有客户端都会有相同的行为。但是谢谢,解决方案会奏效。
    【解决方案4】:
    Textbox11.Attributes.Add("Value",whatever_your_password_is)
    

    【讨论】:

    • 这可能会解决当前的问题,但却违背了最初的目的。密码控件没有任何价值,因此无法从 HTML 源中读取。
    猜你喜欢
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2020-11-10
    • 2012-04-12
    • 2019-11-11
    • 2017-09-25
    相关资源
    最近更新 更多