想要在 asp.net Web 表单应用程序中单击按钮时从母版页调用 .ascx 文件

Want to call .ascx file from master page upon button click in asp.net web form application

我创建了 .Master, .aspx.ascx 页面。我想在单击 .master 页面中的按钮时调用 .ascx 页面。如果未单击该按钮,则不应显示 .ascx。

目前,Onload页,.ascx页正在调用,因为我已经使用了<uc1:Account runat="server" ID="Account" />。但我想在点击按钮后不在页面加载上。

非常感谢任何帮助。提前谢谢你。

我的母版页如下所示:

<%@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Staff.master.cs" Inherits="Admin_Staff" %>

<%@ Register Src="~/Controls/Account.ascx" TagPrefix="uc1" TagName="Account" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <h4>Account</h4>
    <span class="input-group-btn">
        <input type="text" class="  search-query form-control" placeholder="Search" />

        <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
    </span>

    <div class="col-lg-9">
        <uc1:Account runat="server" ID="Account" />
    </div>

</asp:Content>

我的用户控件如下所示:

<%@  Control Language="C#" AutoEventWireup="true" CodeFile="Acc.ascx.cs" Inherits="Admin_Controls_Account" %>
<asp:panel id="pnlAcc" runat="server">
                <section id="AccForm">
                              <asp:PlaceHolder runat="server" ID="PlaceHolder1" Visible="false">

                    </asp:PlaceHolder>

                    <div class="form-group">
                        <asp:Label runat="server" CssClass="col-md-2 control-label">Country: </asp:Label>
                        <div class="col-md-10">
                          <asp:Label runat="server" CssClass="col-md control-label" >New Zealand</asp:Label>
                        </div>
                    </div>

            </section>

</asp:panel>

我的 .aspx 页面

<%@ Page Title="" Language="C#" MasterPageFile="~/Admin/Staff.master" AutoEventWireup="true" CodeFile="Staff.aspx.cs" Inherits="Admin_Staff" %>

<asp:Content ID="Content1" ContentPlaceHolderID="StaffContent" Runat="Server">

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent1" Runat="Server">
</asp:Content>

简单的方法是使控件在母版页上不可见。

<uc1:Account runat="server" ID="Account" Visible="False" />

单击按钮时使其可见。

您可以将控件的可见性设置为 false 并在单击按钮时更改它

<uc1:Account runat="server" ID="Account" Visible="false"  />

然后点击按钮

protected void Button1_Click(object sender, EventArgs e)
{ 
    Account.Visible = true;
}

或者您可以动态添加控件

protected void Button1_Click(object sender, EventArgs e)
{
    Admin_Controls_Account account = (Admin_Controls_Account)LoadControl("~/Controls/Account.ascx");
    PlaceHolder1.Controls.Add(account);
}

请注意,对于最后一个选项,每次出现 PostBack 时您都必须重新加载控件,因此您必须自己存储可见性并在每次加载页面时重新创建控件。