C# Windows窗体网站是否正在重置属性值?

C# Windows窗体网站是否正在重置属性值?,c#,asp.net,webforms,C#,Asp.net,Webforms,在处理事件期间,我的属性值有问题。 我在windows窗体网站上有两个按钮,buttonA和buttonB。这是我拥有的代码: public bool Clicked {get; set;} public void Page_Load(object sender, EventArgs e) { Clicked = false; } public void buttonA_Click (object sender, EventArgs e) { Clicked = true;

在处理事件期间,我的属性值有问题。 我在windows窗体网站上有两个按钮,buttonA和buttonB。这是我拥有的代码:

public bool Clicked {get; set;}

public void Page_Load(object sender, EventArgs e)
{
    Clicked = false;
}

public void buttonA_Click (object sender, EventArgs e)
{
    Clicked = true;
}

public void buttonB_Click (object sender, EventArgs e)
{
    if (Clicked)
    {
         // JS box pops out
    }
}

像这样的。在调试中,当我单击buttonA时,单击Set on true,但当我单击buttonB后,它是false,此消息框不显示。为什么会发生这种情况?

ASP.Net WebForms为每个服务器回发创建单独的页面类实例。
HTTP请求中不保留任何实例状态

要保留状态,需要将其存储在ViewState或session state中


此外,您不能在服务器端代码中调用诸如
MessageBox.Show
之类的UI方法。

您需要使用Javascript。

ASP.Net!=WinForms。你不能在服务器上调用
MessageBox
。你在使用多线程吗?嗯,是的。很明显,我对代码“撒了谎”,只是想表明,如果单击的是真的,那么有什么东西正在调用。我没有这个MessageBox,也没有立即想到我实际上不能调用它:\n在这里,我对它进行了编辑,这样你就不会感到困惑。查找页面生命周期,你就会知道开始使用asp.net需要知道什么。页面事件是按顺序引发和处理的。客户机字面上与服务器“对话”;服务器发送一个页面,客户端得到它,填写表单并单击按钮。客户机将表单发送回服务器,服务器将处理回发并为新的页面实例提供服务,然后重新启动。您的页面代码需要知道该请求是初始请求还是来自现有会话的回发。这不是我的朋友!是的,这就是我不知道的。如何储存@MessageBox.Show-我知道这一点,但在急于给出示例的过程中,我做了一个糟糕的示例。@Tommz:使用会话状态或视图状态,这取决于您希望它与什么关联。