想要在 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 时您都必须重新加载控件,因此您必须自己存储可见性并在每次加载页面时重新创建控件。
我创建了 .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 时您都必须重新加载控件,因此您必须自己存储可见性并在每次加载页面时重新创建控件。