C# ASP.NET messagebox如何锁定在同一页面上单击“是”

C# ASP.NET messagebox如何锁定在同一页面上单击“是”,c#,asp.net,C#,Asp.net,我有一个带有文本框的表单,在第一次保存时,提交按钮将变为可见,单击后,它将通过PostBackURL重定向到付款页面。保存操作将创建一个会话字符串,付款页面将该字符串显示在输入详细信息的标签中。萨姆比特。可见迫使我先保存 当我单击上一页链接返回编辑详细信息时,我的文本框保留了输入,我可以进行更改。当我重新保存并单击submit时,一切正常,会话字符串将在重定向时显示在下一页中。如果我单击“提交”而不保存,则会弹出一个消息框,询问是否保存更改?是否。当我单击“否”时,一切都恢复正常,页面将使用先前

我有一个带有文本框的表单,在第一次保存时,提交按钮将变为可见,单击后,它将通过PostBackURL重定向到付款页面。保存操作将创建一个会话字符串,付款页面将该字符串显示在输入详细信息的标签中。萨姆比特。可见迫使我先保存

当我单击上一页链接返回编辑详细信息时,我的文本框保留了输入,我可以进行更改。当我重新保存并单击submit时,一切正常,会话字符串将在重定向时显示在下一页中。如果我单击“提交”而不保存,则会弹出一个消息框,询问是否保存更改?是否。当我单击“否”时,一切都恢复正常,页面将使用先前保存的会话字符串重定向。但是,当我单击“是”时,当我不希望页面重定向时,页面将被重定向。我希望它在单击“是”后保留在表单页面上,以便保存更改,然后重新提交。我在代码中尝试了Page.PostBcakURL=,但如果PostBackURL没有重定向,这将不起作用。如果我用一个不重定向的按钮,它可以工作

protected void SubmitPayButton_Click(object sender, EventArgs e)
{
    DialogResult result = MessageBox.Show("Save changes?", "Question",  MessageBoxButtons.YesNo, MessageBoxIcon.Question);

        if (result == DialogResult.Yes)
        {
            //result = DialogResult.None;         
            //SubmitPayButton.Visible = false;                
            //SaveButton.CausesValidation = true;
            //SaveButton.PerformClick();                
            //SubmitPayButton.PostBackUrl = "";

        //None of these work

        }
        if (result == DialogResult.No)
        {                
            processStr();//This works                
        }
}

您肯定必须在客户端浏览器端工作,此代码看起来像windows窗体代码

适合您的方法是确认方法,请参见此处的操作:

1但是回发和回发是另一个问题,也许你应该考虑使用其他方法保存它,比如ajax。你可以异步发布表单,这样浏览器就不知道你调用了什么,当单击回发时,它的行为就像什么都没有发生一样。2另一个解决方案是这里介绍的--为页面设置无缓存,以便在每次单击“上一步”按钮时,页面将被重新加载。
我的选择是1,ajax,因为用户体验和应用程序性能。

我认为MessageBox不可能以这种方式使用。此代码正在服务器上运行-谁将在那里单击“是”?hi abatishchev:该链接提供两个指向“是”和“否”的重定向页面链接。我希望“是”以某种方式取消页面。PostBackURL或停止在同一页面上。抱歉,维桑,我不明白。AJAX方法看起来不错:-有人知道如何停止页面。PostBackURL通过YesNo消息框重定向吗?这一定是你的答案:对于AJAX方法来说,这看起来很好。我仍然希望asp.net MessageBox通过单击“是”停止page.PostBackURL重定向。其他一切都正常。我忘了给反馈。在您发表评论后不久,我尝试了AJAX方法,但当我单击“返回”返回表单页面时,所有输入都是空的,包括保存输入的字符串。我放弃了这种方法,因为它立即让我倒退了几步。我会及时再看一遍的。