ASP.NET在自定义事件中更改标签文本

时间:2014-09-29 15:50:09

标签: c# asp.net asp.net-ajax updatepanel

我正在尝试从自定义事件更改标签上的文本。当我通过按钮点击事件(Button1_Click)更新文本时,一切正常。但是,当我尝试在自定义事件(ArReceiver_OnArDataUpdate)中更新相同的标签时,没有任何反应。 ArReceiver_OnArDataUpdate正在被正确触发。

为什么我的活动的反应不同于按钮点击事件?我需要做些什么才能使我的活动有效?

这是VS2013中开箱即用的Web项目。以下是更好地解释的代码:

代码背后:

namespace WinReceiver
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ArReceiver.OnArDataUpdate += ArReceiver_OnArDataUpdate;
        }

        void ArReceiver_OnArDataUpdate(object sender, ArEventArgs e)
        {

            labelVoltage.Text = "Reset";
            UpdatePanel1.Update();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            labelVoltage.Text = "Button Clicked";
            UpdatePanel1.Update();
        }

    }
}

Default.aspx :(默认情况下,site.master中包含ScriptManager)

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Label ID="labelVoltage" runat="server" Text="..."></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

编辑: 我确实发现this question表示这是不可能的,但有人可以解释为什么这可能不可能吗?我也可以刷新页面,但是当我尝试使用Respone.Redirect时,我得到了例外。

1 个答案:

答案 0 :(得分:1)

如果OnArDataUpdate是静态事件,当ASP.NET页面呈现过程超出范围时可能会被触发,因此标签不存在,因为它不在范围内正在处理的页面(因为ASP.NET是无状态的)。

但是,如果ArReceiver是页面上的控件,它应该处理正常,问题可能在控件内或覆盖它的东西(取决于事件触发的时间,它可能被视图状态覆盖)。