2017-10-25 1 views
1

Ich habe .Master, .aspx und .ascx Seiten erstellt. Ich möchte die .ascx-Seite aufrufen, nachdem ich auf die Schaltfläche in der .master-Seite geklickt habe. Wenn die Schaltfläche nicht angeklickt wird, sollte .ascx nicht angezeigt werden.Willst du .ascx Datei von Master-Seite auf Knopfdruck in asp.net Webformular-Anwendung aufrufen

Derzeit Onload der Seite, .ascx Seite ruft, weil ich <uc1:Account runat="server" ID="Account" /> verwendet habe. Aber ich will nach Klick auf den Button nicht beim Laden der Seite.

Jede Hilfe wird sehr geschätzt. Vielen Dank im Voraus.

Meine Masterseite sieht wie folgt aus:

<%@ 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> 

Kontrolle My User wie folgt aussieht:

<%@ 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> 

Meine .aspx Seite

<%@ 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> 

Antwort

1

Sie können die Sichtbarkeit der Steuerung auf false gesetzt und auf Knopf

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

Und dann auf die Schaltfläche klicken

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

Klicken Sie ändern oder können Sie die Steuerelemente dynamisch hinzufügen

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

Beachten Sie, dass Sie für die letzte Option das Steuerelement jedes Mal neu laden müssen, wenn es ein gibt PostBack, also müssen Sie die Sichtbarkeit selbst speichern und das Steuerelement jedes Mal neu erstellen, wenn die Seite geladen wird.

+0

Vielen Dank für Ihre Hilfe. Es hat für mich funktioniert. – Raj

1

einfache Art und Weise die Steuerung unsichtbar zu machen ist auf der Masterseite.

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

Machen Sie es sichtbar auf Knopfdruck.