Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们可以从母版页访问内容页控件吗?_C#_Asp.net_Controls - Fatal编程技术网

C# 我们可以从母版页访问内容页控件吗?

C# 我们可以从母版页访问内容页控件吗?,c#,asp.net,controls,C#,Asp.net,Controls,我有一个母版页,用于几个内容页。 在每个内容页上都有一个用户控件。 我想在单击母版页中的按钮时调用该控件的一个方法 可能吗 我想在单击母版页上的按钮时调用该控件的方法。可能吗 是和否。如果您正在谈论客户端,那么是的,您可以通过JavaScript调用控件上的方法。如果你说的是服务器端,那么不是 然而,我不得不问,如果控件在每个内容页上都可用,那么它是存在于母版页面上的一个非常好的候选控件是吗?如果在特定内容页中不需要它,可以将其隐藏。您可以这样做来访问内容页控件 protected void

我有一个母版页,用于几个内容页。 在每个内容页上都有一个用户控件。 我想在单击母版页中的按钮时调用该控件的一个方法

可能吗

我想在单击母版页上的按钮时调用该控件的方法。可能吗

是和否。如果您正在谈论客户端,那么是的,您可以通过JavaScript调用控件上的方法。如果你说的是服务器端,那么不是



然而,我不得不问,如果控件在每个内容页上都可用,那么它是存在于母版页面上的一个非常好的候选控件是吗?如果在特定内容页中不需要它,可以将其隐藏。

您可以这样做来访问内容页控件

protected void Button1_Click(object sender, EventArgs e)
{
    UserControl_Type uc1 = 
    (UserControl_Type)ContentPlaceHolder1.FindControl("UserControlId");
    if (uc1 != null)
    {
        uc1.Method();
    }
}
我认为您应该将UserControl移动到母版页,并在母版页cs文件中的按钮单击中访问UserControl方法。如果有任何内容页不想显示此用户控件,则可以执行以下操作

使用内容占位符:

在母版页中: 加:


不想显示UserControl的内容页中,添加以下标记,并从希望UserControl显示的所有内容页中删除此标记:

<asp:Content ID="UcControlContent1" 
ContentPlaceHolderID="UcControlPlaceHolder" Runat="Server">    
</asp:Content>


如果每个内容控件都有相同的用户控件,那么可能应该将其移动到母版页?将此控件添加到母版页中的新contentplaceholder中,并在任何不想显示的内容页中覆盖此控件。这是一个易于维护和更好的选项。如果您要在每个控件中维护按钮的单击事件,为什么不在用户控件中也添加该控件呢?这有什么问题。
(UserControl+button=ContentPage)
是的,但为时已晚,我有70个页面使用此母版页,所以很难。。。我怎么能用javascript来做呢?@Rupali,我想你误解了我的意思。如果您试图在客户端执行某个操作,那么您可以访问它,因为在客户端执行时,它都是一个页面。如果您正试图在服务器端执行某些操作,那么只需全力以赴进行更改。您将在很短的时间内完成,并且可能比为您处理此问题所需的时间要短。
<asp:Content ID="UcControlContent1" 
ContentPlaceHolderID="UcControlPlaceHolder" Runat="Server">    
</asp:Content>