ASP.NET验证控件和Javascript确认框

3 .net javascript vb.net asp.net winforms

我有一个使用.NET服务器端输入验证控件的页面.此页面还有一个javascript确认框,在提交表单时触发.目前,当选择"提交"按钮时,将显示"javascript确认"框,并且一旦确认,将触发ASP.NET服务器端验证控件.我想在显示javascript确认框之前触发服务器端验证控件.

如何实现这一目标?我已经在下面列出了我当前代码的示例.

sample.aspx

<asp:textbox id=foo runat=server />
<asp:requiredfieldvalidator id=val runat=server controltovalidate=foo />
<asp:button id=submit runat=server onClientClick=return confirm('Confirm this submission?') />
Run Code Online (Sandbox Code Playgroud)

sample.aspx.vb

Sub Page_Load()
    If Page.IsPostback() Then
        Page.Validate()

        If Page.IsValid Then
            'process page here'
        End If
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

cof*_*iem 8

这似乎是一个非常普遍的问题.

解决方法:

首先验证页面,然后调用confirm,如此此处所示.这确实有两次调用验证的缺点 - 一次在代码中,一次在提交中生成的代码中onclick.

如何使这项工作正常,即首先验证页面(只有一次),然后显示confirm框,我还不知道.

编辑:是一个有用的建议:

当验证控件存在时,ASP.NET在幕后做的是为每个按钮添加一个自动生成的onClick事件.此OnClick事件将取代自定义OnClick事件.所以要克服这个问题,我做了以下几点:

  1. 添加CausesValidation = False
  2. 将Validate()和IsValid代码添加到页面后面的onClick事件,以模拟按钮后面现在缺少的自动生成的验证代码.

编辑2:一个完整​​的例子

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="if (Page_ClientValidate()){ return confirm('Do you want to submit this page?')}" CausesValidation="false" />
Run Code Online (Sandbox Code Playgroud)