阻止Asp.NET按钮提交表单

时间:2015-11-05 16:26:42

标签: c# asp.net forms paypal

所以,我有一张可以创造奇迹的Paypal表格。但是,我现在需要添加优惠券字段,有人可以输入代码,并根据后端回复的内容进行减少。

这一切都运行得非常好,但在签出之前添加选项以了解是否有效,我遇到了一个问题。目前,我的表格(一旦简化)如下所示:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"
    id="payPalForm" runat="server">
    <asp:TextBox runat="server" ID="txtCode" />
    <asp:Button Text="Validate" OnClick="ValidateDiscount" runat="server" />
    <asp:Label ID="txtDesc" runat="server" />

    <input type="submit" name="Submit" value="Pay up!" />

    <input type="hidden" name="cmd" value="_cart" />
    <input type="hidden" name="upload" value="1" />
    ...
</form>

后端具有以下功能:

protected void ValidateDiscount(object sender, EventArgs e)
{
    this.txtDesc.Text = "fetch from database using: " + txtCode.Text;
}

我的问题是,当我点击验证按钮时,表单已提交,我最终在Paypal网站上。我首先使用了具有preventDefault()的Jquery,但这实际上阻止了我的服务器端函数被触发。我也尝试过使用标准的<button><input type='button'>代码,但我无法启动它来启动我的服务器端功能。

有没有办法让Validate按钮不提交表单,或者我应该从表单中删除操作并在单击提交按钮时手动提交表单?

1 个答案:

答案 0 :(得分:2)

您已将表单操作设置为发布到PayPal。

这是行动:

action="https://www.sandbox.paypal.com/cgi-bin/webscr"

以下是您在表单标签中的位置:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"
id="payPalForm" runat="server">

从表单标记中删除它,它应该回发到您的应用程序。