在此行中抛出此错误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>
答案 0 :(得分:0)
发生此错误是因为没有aEdit_English字符串变量(或其他可以使用.ToString()转换的对象)。 aEdit_English为null。
我建议尝试找到声明此变量的位置,并确保它包含在适当的范围内。
答案 1 :(得分:0)
TextBox Edit_English = (TextBox)ContentLoginView.FindControl("Edit_English");
该行返回null并且您认为它已正确找到。
FindControl
仅搜索直接受控制FindControl
控制的控件。在这种情况下ContentLoginView
。 LoggedInTemplate
可能正在扼杀事物。
答案 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;