![](/img/trans.png)
[英]System.NullReferenceException: „Object reference not set to an instance of an object.” problem
[英]System.NullReferenceException: Object reference not set to an instance of an object. throwing error
在此行上引发此错误Edit_English.Text = aEdit_English; 在以下代码中...
protected void btnEdit_Click(object sender, EventArgs e)
{
Button EditButton = (Button)EditLoginView.FindControl("EditButton");
Button SaveButton = (Button)EditLoginView.FindControl("SaveButton");
TitleLanguage.ActiveViewIndex = 2;
LanguageView.ActiveViewIndex = 2;
EditButton.Visible = false;
SaveButton.Visible = true;
TextBox Edit_English = (TextBox)ContentLoginView.FindControl("Edit_English");
TextBox Edit_French = (TextBox)ContentLoginView.FindControl("Edit_French");
TextBox Edit_FrenchT = (TextBox)TitleLoginView.FindControl("Edit_FrenchT");
TextBox Edit_EnglishT = (TextBox)TitleLoginView.FindControl("Edit_EnglishT");
Edit_English.Text = aEdit_English;
Edit_French.Text = aEdit_French;
Edit_EnglishT.Text = aEdit_EnglishT;
Edit_FrenchT.Text = aEdit_FrenchT;
}
这是页面标记以及它。 当我在Visual Studio中键入内容时,访问contentloginview是没有问题的。
<asp:MultiView ID="LanguageView" runat="server">
<asp:View ID="English" runat="server"><asp:Label ID="en_content" runat="server"/></asp:View>
<asp:View ID="French" runat="server"><asp:Label ID="fr_content" runat="server"/></asp:View>
<asp:View ID="Edit" runat="server">
<asp:LoginView ID="ContentLoginView" runat="server">
<LoggedInTemplate>
<asp:TextBox ID="Edit_English" runat="server" TextMode="MultiLine" />
<asp:TextBox ID="Edit_French" runat="server" TextMode="MultiLine" />
</LoggedInTemplate>
</asp:LoginView>
</asp:View>
发生此错误是因为没有aEdit_English字符串变量(或其他可以使用.ToString()转换的对象)。 aEdit_English为空。
我建议尝试定位该变量的声明位置,并确保将其包含在适当的范围内。
TextBox Edit_English = (TextBox)ContentLoginView.FindControl("Edit_English");
该行返回null,并且假定已正确找到它。
FindControl
仅搜索直接在其下调用FindControl
的控件。 在这种情况下, ContentLoginView
。 LoggedInTemplate
可能是事情的关键所在。
问题:设计页面中没有ID为Edit_EnglishT
控件。
因此下面的语句中的Edit_EnglisT
变为null
。
TextBox Edit_EnglishT = (TextBox)TitleLoginView.FindControl("Edit_EnglishT");
当您尝试调用任何成员(例如Text
属性)时,都会抛出上述Excetion。
解决方案:在尝试将值分配给Edit_EnglishT
控件之前,只需验证是否确实找到了它即可。
尝试这个:
if(Edit_EnglishT != null)
Edit_EnglishT.Text = aEdit_EnglishT;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.