为什么 IsPostBack 会跳过我的代码?

Why is IsPostBack skipping through my code?

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

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

<input type="button" value="Edit credentials" onclick="ShowWindow('#EditDetails', 2500); <%WhatToDo = "ChangeUserInfo";%>" />

代码隐藏:

public string WhatToDo = "";



protected void Page_Load(object sender, EventArgs e)
{

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

}

protected void ChangeUserInfo(){ something }

张贴似乎有效,除了它不是 运行 开关盒的事实... 不知道该怎么做,我做错了什么。如果有人知道我做错了什么,那就太好了:)

您在 ASP.Net 中连接事件,ASP.Net 为您隐藏请求和响应对象并将其包装到 Event Driven Architecture 中。所以你不需要处理 Page_Load 中按下的按钮。相反,您需要:

Server side 中的按钮 .aspx:

<asp:Button runat="server" ID="cmdResubmit" OnClick="cmdAddBooking_Click" Text="Resubmit" />

和一个与后面代码中的OnClick同名的事件:

protected void cmdAddBooking_Click(object sender, object e)
{
   //put code button code here
   SomeClass.value = 123;
   SomeClass.StringValue = "1234";
   //etc. etc.
}

注意方法名称匹配:按钮中的OnClick="cmdAddBooking_Click"

就是这样。如果您想要多个按钮,请添加多个 <asp:Button> 并附加多个事件。

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