C# 在提交按钮上回发

C# 在提交按钮上回发,c#,asp.net,postback,C#,Asp.net,Postback,我有一个有4个表的页面。最初加载页面时,显示1和2。那很好。回发时(单击提交时),应显示3和4。即使这样也可以正常工作(这里显示的代码)。再次单击提交时,它必须调用updatePaymentInfo()并重定向。是否需要编写一些东西作为调用UpdatepaymentInfo()的条件,因为单击submit时,它将作为另一个回发,并再次显示3和4 protected void imgbtnSubmit_Click(object sender, ImageClickEventArgs e) {

我有一个有4个表的页面。最初加载页面时,显示1和2。那很好。回发时(单击提交时),应显示3和4。即使这样也可以正常工作(这里显示的代码)。再次单击提交时,它必须调用
updatePaymentInfo()
并重定向。是否需要编写一些东西作为调用
UpdatepaymentInfo()
的条件,因为单击submit时,它将作为另一个回发,并再次显示3和4

protected void imgbtnSubmit_Click(object sender, ImageClickEventArgs e)
{
    try
    {
        if (Page.IsPostBack)
        {
            trtest.Visible = false;
            trCCandBilling.Visible = true;
            trtest2.Visible = true;
        }
        else
        {
            UpdatePaymentInfo();
            Response.Redirect(ApplicationData.URL_MERCHANT_ACCOUNT_HOME, true);
        }
    }
 }

听起来您在管理页面的当前状态时遇到了问题。你可以试试:

  • 有第二个提交按钮。它在风格上与第一个不可区分,因此会被隐藏/显示,但会有自己的点击事件
  • 在页面上放置隐藏表单值以跟踪流程的当前“步骤”
  • 将页面分成两页,因为从用户的角度来看,这显然是一个两页的过程
  • 我个人的最爱,移动到MVC:)虽然这是可以理解的,如果你被困在一个预先存在的WebForms应用程序,只是没有预算重新编写它

  • 我认为最简单的方法是在同一个地方有两个图像提交按钮。按钮A是您已经拥有的按钮B是一个新按钮,其提交处理程序运行UpdatepaymentInfo并重定向

    按钮B开始时不可见,而按钮A可见。单击按钮A时,除了可见性更改外,还可以隐藏按钮A和显示按钮B。然后,当他们单击按钮B时,会发生正确的事情

    不过也没那么优雅


    另一种解决方案可能是在页面中存储值,以指示当前页面状态,您可以在单击按钮时进行检查。

    我猜imgbtnSubmit\u click处理提交按钮的单击事件,因此此方法将仅在回发期间调用,因此条件不正确


    我不会使用这种方法。ASP.NET包含支持这些要求的控件。检查多视图和向导。使用表1和表2以及按钮创建单独的视图,并使用表3和表4以及按钮创建另一个视图。第一个视图上的按钮将切换视图,第二个视图上的按钮将调用该方法并重定向

    另一种可能的方法是保持当前设置并向按钮添加命令参数。默认情况下,它有一些参数,您可以在第一次单击时进行检查。然后,在第一次单击时检查命令参数,然后进行显示,并将命令参数更改为其他参数。因此,在“下一步”按钮上,单击以执行与第二个命令参数相关的工作。因此,无需隐藏或显示新控件即可翻转已完成的工作。

    我现在将尝试这样做!谢谢你,克里斯!因此,您正在描述MultiView的开箱即用功能,而无需手动隐藏和显示多个web控件。@Ladislav Mrnka:很可能,是的。很遗憾,我对我的一些ASP.NET有点迷恋。然后,我经常发现我更喜欢管理控件的隐藏和显示,因为我总是发现一些我不喜欢的关于内置超级控件的小东西。我想在很多方面我都不是100%的ASp.NET思维模式。从您在回答中所说的话来看,多视图似乎可以完成这项工作,而且可能更简单,因为我说我从未使用过它,所以我不想肯定地说。:)