1

マスターページにあるUserControlを使用しています。UserControlでマスターページコントロールにアクセスする必要があります。私はあなたの提案が必要です。

シナリオは次のとおりです。マスターページにラベルがあります。ユーザーコントロールでの選択に基づいて、マスターページのラベルを変更する必要があります。UserControlは、コンテンツプレースホルダーではなく、マスターページ自体に存在します。

4

2 に答える 2

4

マスター ページにパブリック メソッド (またはパブリック プロパティ) を作成してラベルを変更し、UserControl でPage.masterオブジェクトを介してそれを呼び出すことができます。

YourMasterPageClass master = Page.master as YourMasterPageClass;
if(master != null)
{
    master.YourEditMethod("hello");
}
于 2009-05-19T05:54:41.067 に答える
1

すばやく簡単な方法は、次のようにコントロールでイベントを作成し、マスターで処理することです。

//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 は、マスター ページのラベルの名前です。

test1 は、マスター ページのコントロールです。

于 2009-05-19T05:33:13.387 に答える