我正在尝试向CreateUserWizardStep
添加更多字段,这是我添加的内容:
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
<ContentTemplate>
<table border="0">
<tr>
<td align="right">
<asp:Label ID="NickNameLabel" runat="server" AssociatedControlID="NickName">Nick Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="NickName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="NickName"
ErrorMessage="Nick Name is required." ToolTip="Nick Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
<%-- The default code is left unchanged, but not shown here --%>
</table>
</ContentTemplate>
</asp:CreateUserWizardStep>
然后我尝试引用像这样的对象
protected void NewUserWizard_CreatedUser(object sender, EventArgs e)
{
CreateUserWizardStep step = NewUserWizard.FindControl("CreateUserWizardStep1") as CreateUserWizardStep;
TextBox nickName = step.FindControl("NickName") as TextBox;
// insert additional information to the database
}
问题是,我为nickName
获取了空值。我错误地使用FindControl("")
吗?
答案 0 :(得分:3)
您可能希望使用递归查找控制功能,例如:http://stevesmithblog.com/blog/recursive-findcontrol/
答案 1 :(得分:2)
在当前命名容器中搜索指定的服务器控件。
即。它只检查当前容器直接子项。
您可以使用Controls
属性返回step
的所有子项:
ControlCollection children = step.Controls;
并枚举这个寻找你的文本框。
答案 2 :(得分:0)
我自己不知道控件,但 CreateUserWizardStep1.NickNameLabel 不工作吗?