Доступ к свойству UserControl на MasterPage со страницы содержимого - PullRequest
1 голос
/ 09 августа 2011

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

MasterPage APSX:

    <div style="float: left">
        <uc:SessionSummary ID="SessionSummary1" runat="Server" />
    </div>

MasterPage CS:

    public SessionSummary SessionSummaryControl
    {
        get { return (SessionSummary)this.FindControl("SessionSummary1"); }
    }

UserControl:

    public bool RejectedBatches
    {
        get { return lblRejectedBatches.Text.ToUpper().Trim() == "YES" ; }
    }

ContentPage ASPX:

<%@ MasterType VirtualPath="MAASDefault.master" %>
<%@ Reference VirtualPath="MAASDefault.master" %>

ContentPage CS:

bool _value = Master.SessionSummaryControl.RejectedBatches;

_value всегда ложно, даже если отображаемый на элементе управления текст «Да»

Не вижу, чего мне не хватает. Любая помощь будет оценена.

Edit- Хорошо, вот моя бред Я проверил несколько событий страницы и нашел одно, которое даст мне значение. Но, поскольку свойство находится на главной странице, а главная страница является дочерним элементом управления страницей содержимого, значение доступно только после события Page_Load страницы содержимого. Мне нужно визуализировать элементы управления на странице содержимого на основе этого значения от мастера. Мысли?

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

Вы можете попробовать переопределить OnLoadComplete страницы, на этом этапе жизненного цикла страницы элемент управления будет загружен данными.

protected override void OnLoadComplete(EventArgs e)
        {
            bool _value = Master.SessionSummaryControl.RejectedBatches;
            base.OnLoadComplete(e);

        }
1 голос
/ 09 августа 2011

Когда вы звоните Master.SessionSummaryControl.RejectedBatches? Если пользовательский элемент управления ограничен или инициализирован, тогда у вас возникнет эта проблема.

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

0 голосов
/ 09 августа 2011

Я бы, вероятно, прошел через это в отладчике, чтобы увидеть, что происходит.

Мое лучшее предположение, что текст для lblRejectedBatches устанавливается через некоторое время после того, как вы пытаетесь загрузить результат в _value

...