почему asp.net не может найти мое текстовое поле? - PullRequest
2 голосов
/ 05 мая 2010

Я пытаюсь добавить больше полей к 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("")?

Ответы [ 3 ]

3 голосов
/ 05 мая 2010

Вы можете использовать функцию рекурсивного поиска, например, здесь: http://stevesmithblog.com/blog/recursive-findcontrol/

2 голосов
/ 05 мая 2010

FindControl только

Выполняет поиск в текущем контейнере именования указанного серверного элемента управления.

т.е. Он проверяет только текущие контейнеры direct children.

Вы можете использовать свойство Controls, чтобы вернуть всех потомков step:

ControlCollection children = step.Controls;

и перечислите это, ища текстовое поле.

0 голосов
/ 05 мая 2010

Я сам не знаю элемент управления, но CreateUserWizardStep1.NickNameLabel не работает?

...