ASP.NET - 如何跟踪先前回发的事件?

时间:2011-01-24 14:03:36

标签: c# asp.net

我需要在重定向(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事件都会进行检查。因此,当用户在模态上单击“是”时,页面如何知道要退回哪个事件?

4 个答案:

答案 0 :(得分:2)

如果您使用的是WebForms,则可以使用ViewState。

实现封装ViewState [“ShowConfirm”]的ShowConfirm属性。

在第一个回发中你将设置ShowConfirm'true',这将在渲染过程中激活该模态(如果ShowConfirm为true,那么设置为可见'true'某些控件)。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

Implementing Client Callbacks Programmatically without Postbacks in ASP.NET

这就像XMLHttp Ajax调用IMHO的包装器。

答案 3 :(得分:0)

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

我要做的一个建议是在你的页面中放置面板。

第一小组是可见的。

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

在面板2上是确认按钮,单击此按钮可以执行重定向。