C# 为什么iPostBack会跳过我的代码?

C# 为什么iPostBack会跳过我的代码?,c#,html,asp.net,code-behind,C#,Html,Asp.net,Code Behind,我正试图使用switch case来决定在我选择输入页面的任何部分执行哪个操作,因此在发回时它将采取正确的操作 这是按钮(注意,这不是我发布的按钮,而是我进入编辑凭证部分的按钮) 这篇文章似乎很有效,除了它没有运行开关箱这一事实。。。 不知道该做什么,我做错了什么。。如果有人知道我做错了什么,那就太好了:)在ASP.Net中连接事件时,ASP.Net会为您隐藏请求和响应对象,并将其包装成一个文件。因此,您不需要在页面中处理正在按下的按钮。相反,您需要: .aspx中的按钮: <asp:Bu

我正试图使用switch case来决定在我选择输入页面的任何部分执行哪个操作,因此在发回时它将采取正确的操作

这是按钮(注意,这不是我发布的按钮,而是我进入编辑凭证部分的按钮)

这篇文章似乎很有效,除了它没有运行开关箱这一事实。。。
不知道该做什么,我做错了什么。。如果有人知道我做错了什么,那就太好了:)

在ASP.Net中连接事件时,ASP.Net会为您隐藏请求和响应对象,并将其包装成一个文件。因此,您不需要在
页面中处理正在按下的按钮。相反,您需要:

.aspx
中的按钮:

<asp:Button runat="server" ID="cmdResubmit" OnClick="cmdAddBooking_Click" Text="Resubmit" />
请注意方法匹配的名称:
OnClick=“cmdAddBooking\u单击按钮中的“

就这样。如果需要多个按钮,请添加多个带有多个事件的

注意:
单击按钮也会触发页面加载(以及您的事件),因此
页面加载
事件中的任何代码都将在每次单击按钮时运行。您可以通过将其包装在
if(IsPostBack)
中来避免这种情况,这意味着
if
语句中的代码将仅在加载时运行,而不是在回发时运行

无论是哪个按钮导致回发,IsPostBack都将为真。你误解了它的作用,也许你为什么要这样做?我猜你来自一个典型的asp背景?ASP.Net是事件驱动的,所以您只需添加一个带有单击事件的服务器端按钮。@Liam是的,我实际上是。。。这是一个学校项目,我们还没有学习服务器端按钮。然而,这难道不是一种可行的方法吗?如果没有,请给我举个例子说明我能做什么:)@Liam-Ah,我明白了。。。。我仍然不知道如何使用这个按钮。。。你能给我看一个关于我的代码和方法名的例子吗?太好了!它可以工作,我还为另一个按钮做了这项工作,使数据加载只在我需要时发生。然而,最后一个问题是——如何使用此按钮设置公共变量的值?因为我不能在asp按钮上使用?。。。你知道的。。。除了加入到方法中…我不确定我是否清楚你在问什么@YuvalRoth?如果您的意思是在某个类中设置属性,那么您可以在
cmdAddBooking\u Click
方法中执行此操作。我的意思是,在一个普通按钮上,我可以将onclick属性this:放入其中,它是一个公共字符串,我使用它来跟踪事件。实际上,当我现在想到它时,如果我使用这些asp按钮,我不需要它。但是,出于兴趣,我如何在asp按钮上执行此操作?错误中特别指出,我不能在asp按钮上使用。使用打印语句(
)在客户端按钮中输入的任何内容在服务器端都不可用
是一个打印语句,不能打印到服务器端按钮,只能打印HTML标记。
public string WhatToDo = "";



protected void Page_Load(object sender, EventArgs e)
{

if (IsPostBack)
    {
        switch (WhatToDo)
        {
            case "ChangeUserInfo": ChangeUserInfo();
            break;
        }
    }

}

protected void ChangeUserInfo(){ something }
<asp:Button runat="server" ID="cmdResubmit" OnClick="cmdAddBooking_Click" Text="Resubmit" />
protected void cmdAddBooking_Click(object sender, object e)
{
   //put code button code here
   SomeClass.value = 123;
   SomeClass.StringValue = "1234";
   //etc. etc.
}