防止 Asp.NET 按钮提交表单

Posted

技术标签:

【中文标题】防止 Asp.NET 按钮提交表单【英文标题】:prevent Asp.NET button from submitting form 【发布时间】:2016-02-06 14:18:11 【问题描述】:

所以,我有一个 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 网站。我最初使用 Jquery 和 preventDefault(),但这实际上阻止了我的服务器端函数触发。我也尝试过使用标准的 &lt;button&gt;&lt;input type='button'&gt; 标签,但我无法让它触发我的服务器端功能。

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

【问题讨论】:

您的表单将发布到贝宝,因为这是您为其设置的操作。你有很多选择。当您发现折扣有效时,您可以尝试从 c# 中的 ValidateDiscount 函数重定向到 paypal。 【参考方案1】:

您已将表单操作设置为发布到 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">

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

【讨论】:

哦...我实际上并不知道表单的操作阻止了回发'-' TIL 是的,它可以抓住你。 W3C网站有更多信息:w3schools.com/tags/att_form_action.asp.

以上是关于防止 Asp.NET 按钮提交表单的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Validation - 一个 asp.net 表单上的多个提交按钮,不同的验证组?

请问asp.net中如何在后台代码里提交表单

如何使用 JavaScript 而不是提交按钮发布 ASP.NET MVC Ajax 表单

ASP.NET MVC 网站开发总结——Ajax异步提交表单之检查验证码

提交到 ASP.NET 页面的 PDF 表单创建返回 HTML 文件

在 ASP.Net MVC 中使用一个提交按钮保存一系列创建表单