我有一个注册了两个用户控件的ASP.NET页面。第一个控件只有一个按钮。第二个控件是简单的文本,初始情况下被隐藏。我的目标是在第一个控件中的按钮被点击时(即在按钮点击事件中),使第二个控件可见。
ASP.NET页面:
<%@ Page Title="" Language="C#" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register Src="~/UC_button.ascx" TagName="button" TagPrefix="UC" %>
<%@ Register Src="~/UC_text.ascx" TagName="text" TagPrefix="UC" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MyTestContent" Runat="Server">
<UC:button ID="showbutton1" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MyTestContent2" Runat="Server">
<UC:text runat="server" Visible="false" ID="text1" />
</asp:Content>
UC_Button.ascx.cs:
protected void button1_Click(object sender, EventArgs e)
{
Button btnSender = (Button)sender;
Page parentPage = btnSender.Page;
UserControl UC_text = (UserControl)parentPage.FindControl("text1");
UC_text.Visible = true;
}
我做错了什么?在代码的最后一行,我遇到了众所周知的错误"对象引用未设置为对象实例"
编辑:
我在最初发布时忘记提及一个问题。用户控件位于不同的<asp:Content></asp:Content>
中(我已编辑上面的示例)。如果我将它们放在同一个占位符中,代码就可以正常工作。如果我将它们放在单独的内容占位符中,我无法使用findcontrol找到它们。为什么会这样,我该如何找到它们?
Content1
д»ҺиҜҘйЎөйқўеҶ…йғЁз”ЁжҲ·жҺ§д»¶дёӯдёҚеҸҜи§Ғ/ж— жі•и®ҝй—®пјҲжҲ–иҖ…жҲ‘е®Ңе…Ёй”ҷдәҶпјҹпјү - Janez