我有一個ASP.NET頁面,註冊了2個用戶控件。第一個只有一個按鈕。第二個是簡單的文本,並在默認情況下隱藏。我想要的是當點擊第一個按鈕(即按鈕單擊事件)時,使第二個按鈕可見。如何在該ASP.NET頁面上的另一個用戶控件的事件中查找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;
}
我在做什麼錯?在代碼的最後一行,我知道Object reference not set to an instance of an object.
錯誤。
編輯:
有一件事我忘了提,當第一次發佈此。用戶控件在不同的<asp:Content></asp:Content>
控件(我編輯的上例)。如果我把它們放在相同的佔位符代碼中就行了。如果我將它們放在單獨的內容佔位符中,我無法以findcontrol的方式找到它們。爲什麼是這樣,我怎麼找到他們?
更好的解決方案:MVC :) – drzaus