Управление доступом к главной странице

Я использую UserControl, который присутствует на главной странице. Мне нужно получить доступ к элементу управления главной страницы в UserControl. Мне нужны твои предложения.

Сценарий: метка присутствует на главной странице. На основе выбора в пользовательском элементе управления мне нужно изменить метку главной страницы. UserControl присутствует на самой главной странице, а не в заполнителе содержимого.


person Community    schedule 19.05.2009    source источник


Ответы (2)


Создайте общедоступный метод (или общедоступное свойство) на главной странице, чтобы изменить свою метку, и в UserControl вы можете вызвать его через объект Page.master:

YourMasterPageClass master = Page.master as YourMasterPageClass;
if(master != null)
{
    master.YourEditMethod("hello");
}
person Davide Vosti    schedule 19.05.2009

Быстрый и простой способ - создать событие в управлении и обработать в мастере следующим образом:

//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 - это элемент управления на главной странице.

person TheVillageIdiot    schedule 19.05.2009