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

У меня есть пользовательский элемент управления, который имеет открытое свойство (например, AlarmID), и этот элемент управления оборачивается внутри элемента div, и когда пользователь нажимает кнопку на странице, в коде позади устанавливается общедоступное свойство этого пользовательского элемента управления. затем вызывается ScriptManager.RegisterStartupScript для отображения модального всплывающего окна, являющегося div-оберткой для этого элемента управления.

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

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

Для большей ясности вот мой код в коде позади элемента управления:

protected void Control_Load(object sender, EventArgs e)
        {
            lblAlarmCode.Text = alarmID.ToString();
        }

        public int AlarmID
        {
            get
            {
                return this.alarmID;
            }
            set
            {
                this.alarmID = value;
            }
        }

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

Спасибо

2 ответа

Убедитесь, что модальный <form> элемент на странице, иначе он вообще не будет частью жизненного цикла страницы.

Как пример, я не говорю, что это ваш код, но мне пришлось использовать нечто подобное, чтобы <asp:Textbox> а также <asp:Button> элементы управления, которые будут перемещаться по запросу

ASPX код:

<asp:Panel runat="server" ID="pnlWorkItem">
    <fieldset>
        <legend></legend>
        <label>Job Code</label>
        <asp:DropDownList runat="server" ID="ddlJobCode" Width="50%" />

        <label>Hours</label>
        <asp:TextBox runat="server" ID="txtHours" />
    </fieldset>

    <fieldset>
        <legend></legend>
        <p><asp:Button runat="server" ID="btnAddWorkItem" OnClick="btnAddWorkItem_Click" text="Add Work Item" /></p>
    </fieldset>
</asp:Panel>

Javascript:

$(function () {
    var workItemPanel = $("#<%= pnlWorkItem.ClientID %>");
    workItemPanel.hide();
    $("#add-work").on("click", function () {
        $(workItemPanel).dialog({
            width: 450,
            height: 300
        }).parent().appendTo($("form:first"));
    });
});

Он добавит ваш элемент к элементу формы, созданному ASP.net, и ваши свойства должны быть установлены и перенесены.

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

Другие вопросы по тегам