我正在尝试从自定义事件更改标签上的文本。当我通过按钮点击事件(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时,我得到了例外。
答案 0 :(得分:1)
如果OnArDataUpdate是静态事件,当ASP.NET页面呈现过程超出范围时可能会被触发,因此标签不存在,因为它不在范围内正在处理的页面(因为ASP.NET是无状态的)。
但是,如果ArReceiver是页面上的控件,它应该处理正常,问题可能在控件内或覆盖它的东西(取决于事件触发的时间,它可能被视图状态覆盖)。