为什么 ASP.NET 找不到我的文本框?

发布于 2024-08-31 18:15:07 字数 1514 浏览 7 评论 0原文

我正在尝试向 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("")

I'm trying to add more fields to the CreateUserWizardStep, here is what I added:

<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>

Then I tried to reference the objects like this

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
}

The problem is, I'm getting nulls for nickName. Am I using FindControl("") incorrectly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

送舟行 2024-09-07 18:15:07

您可能想使用递归查找控制功能,如下所示: http://stevesmithblog.com/blog /递归查找控制/

you may want to use a recursive find control function such as here: http://stevesmithblog.com/blog/recursive-findcontrol/

信愁 2024-09-07 18:15:07

FindControl

在当前命名容器中搜索指定的服务器控件。

即它只检查当前容器的直接子容器。

您可以使用 Controls 属性返回 step 的所有子级:

ControlCollection children = step.Controls;

并枚举此查找文本框。

FindControl only

Searches the current naming container for the specified server control.

i.e. It only checks the current containers direct children.

You can use the Controls property to return all the children of step:

ControlCollection children = step.Controls;

and enumerate over this looking for your text box.

谢绝鈎搭 2024-09-07 18:15:07

我自己不知道该控件,但是 CreateUserWizardStep1.NickNameLabel 不起作用吗?

I don't know the control myself, but doesn't CreateUserWizardStep1.NickNameLabel work?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文