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

时间:2015-03-30 10:07:12

标签: c# html asp.net code-behind

我正在尝试决定使用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 }

该帖子似乎有效,除了它没有运行开关案例...... 不知道该怎么办,我做错了什么..如果有人知道我做错了什么,那就太好了。)

1 个答案:

答案 0 :(得分:2)

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

.aspx中的

Server side按钮:

<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语句中的代码将仅在加载时运行而不在回发上运行