System.NullReferenceException:未将对象引用设置为对象的实例。投掷错误

时间:2014-02-27 01:56:25

标签: c# asp.net

在此行中抛出此错误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>

3 个答案:

答案 0 :(得分:0)

发生此错误是因为没有aEdit_English字符串变量(或其他可以使用.ToString()转换的对象)。 aEdit_English为null。

我建议尝试找到声明此变量的位置,并确保它包含在适当的范围内。

答案 1 :(得分:0)

TextBox Edit_English = (TextBox)ContentLoginView.FindControl("Edit_English");

该行返回null并且您认为它已正确找到。

FindControl仅搜索直接受控制FindControl控制的控件。在这种情况下ContentLoginViewLoggedInTemplate可能正在扼杀事物。

It could also be an issue with Master Pages.

答案 2 :(得分:0)

问题:您的设计页面中无法使用ID Edit_EnglishT进行控制。

以下语句中的Edit_EnglisT变为null

TextBox Edit_EnglishT = (TextBox)TitleLoginView.FindControl("Edit_EnglishT");

当您尝试呼叫任何成员(例如:Text属性)时,请注意上述异常。

解决方案:在尝试为Edit_EnglishT控件赋值之前,您只需确认它是否真的被发现。

试试这个:

if(Edit_EnglishT != null)
    Edit_EnglishT.Text = aEdit_EnglishT;