FindControl返回Null引用

时间:2014-08-12 12:29:16

标签: c# asp.net sharepoint findcontrol fba

我有两个文本框,我使用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正在返回 null引用

他们正在访问:

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。 <{1}}字段是内置的,而LastName字段是由我添加的。

我只显示此部分代码,因为PrimaryCompany正在抛出此处。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

你确定在这里抛出空引用吗?你有一个行号吗?这里实际上正在检查控件是否为空。

我的猜测是,它实际上发生在代码的其他地方,因为.Text属性为null。例如,如果您执行以下操作:

txtPrimaryCompany.Text.Trim()

答案 1 :(得分:0)

由于某种原因,IEditableTextControl不会对我创建的字段起作用。我使用了TextBox代替了它。