在何处捕获要包装以加载到模态中的用户控件属性



我有一个用户控件,它有一个公共属性(例如 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;
            }
        }

我可以捕获该标签正确显示的属性的确切生命周期事件是什么?

谢谢

确保模态附加到页面上的 <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 生成的表单元素中,并且应该设置和携带您的属性。

一种解决方案是在setter中设置标签。但是,可能还有其他解决方案,但这种方式只是有效的。

最新更新