我有两个文本框,我使用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
正在抛出此处。我错过了什么吗?
答案 0 :(得分:0)
你确定在这里抛出空引用吗?你有一个行号吗?这里实际上正在检查控件是否为空。
我的猜测是,它实际上发生在代码的其他地方,因为.Text属性为null。例如,如果您执行以下操作:
txtPrimaryCompany.Text.Trim()
答案 1 :(得分:0)
由于某种原因,IEditableTextControl
不会对我创建的字段起作用。我使用了TextBox
代替了它。