【问题标题】:Why is IsPostBack skipping through my code?为什么 IsPostBack 会跳过我的代码?
【发布时间】:2015-06-03 07:19:22
【问题描述】:

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

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

【问题讨论】:

  • IsPostBack 将在您进行回发时为真,无论是哪个按钮引起的。你对它的作用的误解,可能是read this
  • 你为什么要这样做?我猜你来自经典的asp背景? ASP.Net 是事件驱动的,所以你只需要添加一个带有点击事件的服务器端按钮。
  • @Liam 是的,我实际上...这是一个学校项目,我们还没有了解服务器端按钮。但是,这不是一种可行的方法吗?如果没有,请给我一个例子,说明我该怎么做:)
  • @Liam 啊,我明白了......我仍然对如何使用这个按钮一无所知......你能给我一个参考我的代码和方法名称的例子吗?

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


【解决方案1】:

您在 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"

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

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

【讨论】:

  • 太棒了!它有效,我还为另一个按钮完成了它,以使数据加载仅在我需要时发生。但是,最后一个问题 - 我如何也可以使用此按钮设置公共变量的值?因为我不能在 asp 按钮上使用 ?...你知道...除了放入方法中...
  • 我不确定我是否清楚你在问@YuvalRoth 什么?如果您的意思是在某个类中设置属性,那么您可以在 cmdAddBooking_Click 方法中执行此操作。
  • 我的意思是,在一个普通按钮上,我可以在 onclick 属性中放入: 这是一个公共字符串,我用它来跟踪事情。实际上,当我现在想到它时,如果我使用这些 asp 按钮,我就不需要它。但是,只是出于兴趣,我怎么能在 asp 按钮上做到这一点?
  • 它在错误中特别指出,我不能在asp按钮上使用。
  • 您使用打印语句 (&lt;%%&gt;) 放入客户端按钮的任何内容在服务器端均不可用。 &lt;%%&gt; 是打印语句,不能打印到服务器端按钮,只能打印 HTML 标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2020-05-15
  • 1970-01-01
  • 2017-02-05
相关资源
最近更新 更多