2009-05-19 7 views
1

Ich benutze ein UserControl, das auf der Master-Seite vorhanden ist. Ich muss auf ein Masterseitensteuerelement in dem Benutzersteuerelement zugreifen. Ich brauche deine Vorschläge.Access Master Page Control

Das Szenario ist Ein Label ist auf der Masterseite vorhanden. Basierend auf den Auswahlen im Benutzersteuerelement muss ich das Masterpage-Label ändern. Das UserControl ist in der Masterseite selbst nicht in dem Inhaltsplatzhalter vorhanden.

Antwort

1

schnelle und einfache Art und Weise ist Ereignis in der Steuerung zu erstellen und im Master wie folgt behandeln:

//Control aspx 
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" 
    Inherits="TestControl" %> 

<div style="width:300px;border:2px groove blue;"> 
    <asp:Button ID="btn1" runat="server" Text="One" onclick="btn_Click" /> 
    <asp:Button ID="btn2" runat="server" Text="Two" onclick="btn_Click" /> 
    <asp:Button ID="btn3" runat="server" Text="Three" onclick="btn_Click" /> 
    <asp:Button ID="btn4" runat="server" Text="Four" onclick="btn_Click" /> 
</div>  

//Control C# 

namespace Controls 
{ 
    public partial class TestControl : System.Web.UI.UserControl 
    { 
     public delegate void UserChoice(TestEventArgs e); 
     public event UserChoice OnUserChoice; 

     protected void btn_Click(object sender, EventArgs e) 
     { 
      if (OnUserChoice != null) 
       OnUserChoice(new TestEventArgs(((Button)sender).Text)); 
     } 
    } 

    public class TestEventArgs : EventArgs 
    { 
     private string _value; 

     public TestEventArgs(string str) 
     { 
      _value = str; 
     } 
     public string Message 
     { 
      get { return _value; } 
     } 
    } 
} 


//MasterPage Code 

protected void Page_Load(object sender, EventArgs e) 
{ 
    test1.OnUserChoice += new 
     Controls.TestControl.UserChoice(test1_OnUserChoice); 
} 

void test1_OnUserChoice(ROMS.Intranet.Controls.TestEventArgs e) 
{ 
    MasterLabel.Text = e.Message; 
} 

MasterLabel ist der Name des Labels in Masterseite.

test1 ist das Steuerelement in der Masterseite.

4

erstellen eine öffentliche Methode (oder öffentliches Eigentum) in der Masterseite Ihr Etikett zu ändern, und in dem Usercontrol Sie sind in der Lage, es zu nennen, durch das Page.master Objekt:

YourMasterPageClass master = Page.master as YourMasterPageClass; 
if(master != null) 
{ 
    master.YourEditMethod("hello"); 
}