使用TextMode = Password将默认值添加到ASP TextBox

时间:2013-08-21 20:56:02

标签: asp.net webforms

我在网上找到了关于这个的文章,但我似乎无法让它发挥作用。

这是我当前的HTML(包含了所有混乱的布局内容)

<asp:Login ID="LoginUser" runat="server" EnableViewState="false"
OnAuthenticate="LoginUser_Authenticate">
    <LayoutTemplate>

        <asp:TextBox ID="UserName" runat="server" Text="username" 
        CssClass="text-box login-text-box"></asp:TextBox>

        <asp:TextBox ID="Password" runat="server" CssClass="text-box 
        login-text-box" TextMode="Password"></asp:TextBox>

    </LayoutTemplate>
</asp:Login>

以下是我在网上找到的服务器端代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        txtPassword.Attributes.Add("value", "defaultpassword")
    }

我不断收到消息:“当前上下文中不存在txtPassword”。

对于我更改“txtPasssword”文本的任何内容,我都会收到该错误。

3 个答案:

答案 0 :(得分:2)

两件事。

首先,您必须按实际名称引用对象。正如mikhairu指出的那样,“txtPassword”不是对象名称。 TextBox对象是“密码”。

其次,同样重要的是,这个背景很重要。您的页面上没有“密码”文本框。名为“LoginUser”的用户控件执行此操作。所以你需要做两件事之一。一种选择是从Login控件继承并添加用于设置密码的代码,这可能有点超出你的范围,无论如何我认为这是一个坏主意。另一个选择是执行以下操作:

LoginUser.Password.Attributes.Add("value", "defaultpassword");

然而,我并不完全确定这会奏效。你很可能不得不这样做:

TextBox txtPassword = (TextBox)LoginUser.FindControl("Password");
txtPassword.Attributes.Add("value", "defaultpassword");

答案 1 :(得分:1)

您必须首先找到控件,因为NamingContainerLogin - 控件不是页面:

var txtPassword = (TextBox)LoginUser.FindControl("PassWord");

答案 2 :(得分:1)

由于您的文本框位于LayoutTemplate控件的Login内,因此您必须先找到它。

示例:

TextBox txtPassword = (TextBox)LoginUser.FindControl("Password");
txtPassword.Attributes.Add("value", "defaultpassword");