FindControl返回一个空引用

本文关键字:一个 引用 返回 FindControl | 更新日期: 2023-09-27 18:17:42

我有两个文本框,我使用FindControl()访问它们:

<tr>
        <td align="right">
            <asp:Label ID="LastNameLabel" AssociatedControlID="LastName" runat="server" /></td>
        <td>
            <asp:TextBox ID="LastName" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="LastNameRequired" runat="server" ControlToValidate="LastName" Display="Dynamic"></asp:RequiredFieldValidator></td>
    </tr>
    <tr>
        <td align="right">
            <asp:Label ID="PrimaryCompanyLabel" AssociatedControlID="PrimaryCompany" runat="server" /></td>
        <td>
            <asp:TextBox ID="PrimaryCompany" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="PrimaryCompanyRequired" runat="server" ControlToValidate="PrimaryCompany" Display="Dynamic"></asp:RequiredFieldValidator></td>
    </tr>

文本框LastName正在被访问,但第二,PrimaryCompany返回一个空引用

它们正在被访问:

private IEditableTextControl _txtLastName;
    protected IEditableTextControl txtLastName
    {
        get
        {
            if (_txtLastName == null)
            {
                _txtLastName = (IEditableTextControl)this.CreateUserStep.ContentTemplateContainer.FindControl("LastName");
            }
            return _txtLastName;
        }
    }
private IEditableTextControl _txtPrimaryCompany;
    protected IEditableTextControl txtPrimaryCompany
    {
        get
        {
            if (_txtPrimaryCompany == null)
            {
                _txtPrimaryCompany = (IEditableTextControl)this.CompleteStep.ContentTemplateContainer.FindControl("PrimaryCompany");
            }
            return _txtPrimaryCompany;
        }
    }

这段代码来自CodePlex中的SharePoint2013 FBAPack。LastName字段是内置的,而PrimaryCompany字段是由我添加的。

我只显示这部分代码,因为null reference在这里被抛出。我错过什么了吗?

FindControl返回一个空引用

你确定它是在这里,空引用被抛出?你有电话号码吗?这里实际检查的是控件是否为空。

我猜它实际上是在代码的其他地方发生的,因为。text属性是空的。例如,如果你这样做:

txtPrimaryCompany.Text.Trim ()

由于某些原因,IEditableTextControl不能在我创建的字段上工作。我用TextBox代替,它工作。