【问题标题】:ASP.NET - How to track event from previous postback?ASP.NET - 如何跟踪以前回发的事件?
【发布时间】:2011-01-24 22:43:52
【问题描述】:

我需要在重定向 (Response.Redirect) 到另一个页面之前检查回发的特定条件。

注意...我无法使用JavaScript来检测是否确认(这也是一个要求):s

伪:

protected void lbtnRedirect_OnClick(object sender, EventArgs e)
{
    if (showConfirm)
    {
       // Set flag for client side
       this.ShowConfirm = true;

       // Track this event for next postback.
    }
    else
    {
       Response.Redirect("somepage.aspx");
    }
}

如果 showConfrim 标志 == true,则客户端将显示一个模式对话框,询问他们是否确定要重定向。如果用户单击“是”,则页面回发并且期望的效果是触发 lbtnRedirect_OnClick 事件。我将如何跟踪 lbtnRedirect 事件?

编辑: 我跟踪标志以显示模态没有问题(是的,必须使用 JS 来显示模态......你无法摆脱的东西:))。我应该更清楚。

当用户单击“是”以继续重定向时。该页面将再次回发,但需要知道要通过哪个事件。

即假设有 3 个 onclick 事件,1) lbtnRedirect1_Onclick 2) lbtnRedirect2_OnClick 3) lbtnRedirect3_OnClick...每个都进行确认检查。

每个 onclick 事件都会进行检查。那么当用户在 modal 上点击“是”时,页面如何知道要退回到哪个事件中呢?

【问题讨论】:

  • 模态弹出窗口几乎是一个 javascript 的东西。如果你有 devexpress,他们有一个弹出控件,你可以试试。
  • 你可以使用javascript吗?我会使用 javascript 来显示模态对话框并让对话框的“是”按钮启动重定向。

标签: c# asp.net


【解决方案1】:

如果您在 WebForms 中,则可以使用 ViewState。

实现一个封装 ViewState["ShowConfirm"] 的 ShowConfirm 属性。

在第一次回发中,您将 ShowConfirm 设置为“true”,这将在渲染期间激活该模式(如果 ShowConfirm 为 true,则将某些控件设置为可见“true”)。

在下一次回发中,您将 ShowConfirm 设置为“false”,因为它是“true”,最后您将完成整个重定向!

【讨论】:

  • 这是正确答案。 OP 中的代码示例基本上是在遵循 ViewState 支持的属性之后实现它的确切逻辑,在重定向之前的第一次迭代中只会有一些面板显示/隐藏。
【解决方案2】:

您可以使用来自 javascript 的 ajax 调用来设置所需的值。

【讨论】:

    【解决方案3】:

    由于回发会在执行到达您的按钮点击事件之前发生,我们需要一个解决方法,如果您不需要 JS 作为您的要求,那么看看

    Implementing Client Callbacks Programmatically without Postbacks in ASP.NET

    这很像 XMLHttp Ajax 调用恕我直言的包装器。

    【讨论】:

      【解决方案4】:

      如果没有 javascipt,您将无法轻松创建模型表单。

      我会提出的一个建议是在您的页面中设置面板。

      面板一可见。

      提交一个;面板一隐藏,面板二可见,要求确认。

      第二个面板是一个确认按钮,单击此按钮将执行重定向。

      【讨论】:

        猜你喜欢
        • 2010-11-02
        • 1970-01-01
        • 2011-12-14
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多