vb/aspx单页模型:如何实现服务器端验证码同时post表单数据到另一个页面?

vb/aspx single-page model: how to implement server-side captcha while also post form data to another page?

我正在使用 WebCaptcha 但是我不知道如何执行 POST 来验证用户验证码输入,然后在相同的 post 管道中也提交仅当验证码正确时,才将表单数据发送到不同的网页。我知道这很难 w/o 完整代码但是...是的。这是触发表单的按钮:

<form runat="server" name="PDFfrm1" id="PDFfrm1" method="post" enableviewstate="false" action=""><!-- action="/Processor.aspx" -->

清空 action= post 页面返回自身。

<asp:Button ID="btnSubmit" runat="server" Text=" Submit " Style="border-radius:8px" UseSubmitBehavior="false" OnClick="btnSubmit_Click" OnClientClick="" Width="6em" Height="3em" Borderstyle="Groove" Borderwidth="2" Font-Bold="true" BackColor="Navy" ForeColor="White" />

UseSubmitBehavior= 在普通按钮和提交按钮之间切换按钮。请注意,Microsoft 在 OnClientClick= 部分填充了一个 Javascript __DoPostBack() 函数,您可以通过向该属性添加“//”来阻止该函数。 那么:

Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSubmit.Click
If Page.IsValid Then
lblResult1.Text = "CAPTCHA verification passed, your request has been sent!"
Else
lblResult1.Text = "Sorry, the CAPTCHA text was not entered properly, try again."
End If
End Sub

我想我必须将代码添加到执行服务器端 (ajax??) post 的 Page.IsValid 部分,因为为了btnSubmit_Click() 以获得控制权,当前页面已经 已经 对自身完成了 post,我不知道如何中断该管道。我不能只做 Javascript POST 因为客户在这个阶段不受控制。

答案很简单:做 Server.Transfer(URL, True) 保留成功的 Page.IsValid 测试中的现有会话数据,允许目标页面读取表单数据,就好像它已经完成了 POST.