如果无法做到这一点,我怎样才能将密码从字段中删除?
dim pw1 as textbox, password as string
pw1 = ctype(FindControl("PasswordStr"), textbox)
password = pw1.text
Nope:System.NullReferenceException:未将对象引用设置为对象的实例。
此代码位于我点击按钮
时调用的子代码中编辑:rockinthesixstring
这是OP说他的ASPX标记看起来像
<form runat="server" id="form1">
<p>
<label for="passwordStr">Password</label>
<input type="text" textmode="password" id="passwordStr" name="passwordStr" maxlength="50">
</p>
</form>
答案 0 :(得分:2)
如果密码字段不在转发器之类的另一个“容器”中,那么您只需访问它即可。
您的密码字段的ID是什么?
<asp:TextBox ID="txtPassword" TextMode="password" runat="server" />
您可以像这样访问它:
pw1 = txtPassword.Text;
答案 1 :(得分:1)
您没有根据事物的外观使用服务器控件(基于您的评论)
在aspx页面上使用如下所示的控件:
<asp:TextBox TextMode="Password" ID="passwordInput" runat"server"></asp:TextBox>
您可以使用
从代码隐藏文件中访问服务器控件passwordInput.Text
答案 2 :(得分:1)
如果您的密码字段只是页面上的ASP.NET控件(不嵌套在另一个控件中,例如GridView ItemTemplate),您可以这样做:
string password = PasswordStr.Text;
答案 3 :(得分:0)
由于我们不知道你的ASPX是什么样的,我们在黑暗中有点射击。
假设你有一个看起来像这样的aspx
<form id="form1" runat="server" DefaultFocus="formVw$txtName">
<div>
<asp:FormView ID="formVw" runat="server">
<ItemTemplate>
Name:
<asp:TextBox ID="txtName" runat="server"
Text='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
</ItemTemplate>
</asp:FormView>
</div>
</form>
你会找到像这样的控件
TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;
if (tb != null)
{
//Access TextBox control
}
您最初发布的代码是在Form
内寻找控件,这意味着,如果您有另一个控件(例如FormVw
),那么您的代码将找不到嵌套的文本框。
你说你的表格看起来像这样
<form runat="server" id="form1">
<p>
<label for="passwordStr">Password</label>
<input type="text" textmode="password" id="passwordStr" name="passwordStr" maxlength="50">
</p>
</form>
将其更改为此
<form runat="server" id="form1">
<p>
<label for="passwordStr">Password</label>
<asp:TextBox runat="server" TextMode="password" ID="passwordStr" maxlength="50">
</p>
</form>
然后像这样访问密码字段
string password = passwordStr.Text;