簡體   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