マスターページにあるUserControlを使用しています。 UserControlのMasterページコントロールにアクセスする必要があります。私はあなたの提案が必要です。マスターページコントロールへのアクセス
シナリオは、マスタページにラベルがあります。 usercontrolの選択に基づいて、私はmasterpageラベルを変更する必要があります。 UserControlは、コンテンツプレースホルダにないマスタページ自体に存在します。
マスターページにあるUserControlを使用しています。 UserControlのMasterページコントロールにアクセスする必要があります。私はあなたの提案が必要です。マスターページコントロールへのアクセス
シナリオは、マスタページにラベルがあります。 usercontrolの選択に基づいて、私はmasterpageラベルを変更する必要があります。 UserControlは、コンテンツプレースホルダにないマスタページ自体に存在します。
迅速かつ簡単な方法は、このようなマスターでコントロールでイベントを作成して処理することです:
//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はマスターページのコントロールです。
あなたのラベルを変更するマスターページにパブリックメソッド(またはパブリックプロパティ)を作成し、ユーザーコントロールに、あなたがそれを呼び出すことができます、Page.master
オブジェクトを介して:
YourMasterPageClass master = Page.master as YourMasterPageClass;
if(master != null)
{
master.YourEditMethod("hello");
}