繁体   English   中英

System.NullReferenceException:对象引用未设置为对象的实例。 抛出错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM