防止 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(),但这实际上阻止了我的服务器端函数触发。我也尝试过使用标准的 <button>
或 <input type='button'>
标签,但我无法让它触发我的服务器端功能。
有没有办法让验证按钮不提交表单,或者我应该从表单中删除操作并在单击提交按钮时手动提交表单?
【问题讨论】:
您的表单将发布到贝宝,因为这是您为其设置的操作。你有很多选择。当您发现折扣有效时,您可以尝试从 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 表单上的多个提交按钮,不同的验证组?
如何使用 JavaScript 而不是提交按钮发布 ASP.NET MVC Ajax 表单
ASP.NET MVC 网站开发总结——Ajax异步提交表单之检查验证码