Передача данных в пользовательский контроль на главной странице с подстраницы - PullRequest
0 голосов
/ 10 марта 2012

У меня есть пользовательский элемент управления на главной странице, и я хотел бы передать значение в этот пользовательский элемент управления с подстраницы, как бы я мог передать значения?

Этот элемент управления находится вглавная страница

<%@ Register TagPrefix="test" TagName="Data" Src="controls/TEST.ascx" %>

Эта кодовая переменная находится в пределах контроля пользователя

public partial class Controls_TEST : System.Web.UI.UserControl
{
    private string _Title;
    public string Title
    {
        get { return _Title; }
        set { _Title = value; }
    }
}

Код внутри подстраницы

public partial class sub_page : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         Controls_Test m = LoadControl("~/Controls/TEST.ascx");
         m.Title = "TEST";
    }
}

Обратите внимание, что пример кода на подстранице не работаетпотому что он не может найти этот пользовательский элемент управления на подстранице.

Я пробовал Page.Master.FindControl, и он также не работает для меня.Пожалуйста, помогите.

1 Ответ

4 голосов
/ 10 марта 2012

Используйте свойства для связи от вашего Page до вашего MasterPage и используйте свойства для связи от вашего MasterPage к UserControl.

Чтобы получить ссылку на элемент управления в вашем MasterPage, вы должны предоставить публичное свойство, которое возвращает его:

Например (в MasterPage):

public Controls_Test MyControl
{
     get
     {
         return Controls_TEST1;
     }
}

И вы можете вызывать это свойство с одной из ваших страниц ContentPages следующим образом (например, если тип вашего мастера называется « SiteMaster »):

protected void Page_Load(object sender, EventArgs e)
{
    ((SiteMaster)Page.Master).MyControl.Title = "TEST";
}

Как правило : чем больше вы инкапсулируете свои элементы управления, тем более надежным, отказоустойчивым, обслуживаемым и расширяемым будет ваш код.

Следовательно, было бы лучше предоставить доступ только к Заголовку, а не ко всему UserControl.

В MasterPage:

public String Title
{
     get
     {
         return Controls_TEST1.Title;
     }
    set
    {
        Controls_TEST1.Title = value;
    }
}

В ContentPage:

((SiteMaster)Page.Master).Title = "TEST";

Таким образом, вы можете изменить логику и элементы управления в UserControl и MasterPage без проблем на ваших страницах, которые уже получили прямой доступ к UserControl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...