当我在 asp.net 中指定操作 url 时,OnClick 事件未触发
本文关键字:OnClick 事件 url 操作 asp net | 更新日期: 2023-09-27 18:30:32
我需要将用户重定向到PayPal帐户。但在此之前,我想收集该用户的姓名和电子邮件。所以我使用以下代码。
<form id="paypalForm" method="post" action="https://www.paypal.com/cgi-bin/webscr"
target="_top" runat="server">
<div>
<label>
Full Name:<span>*</span></label>
<asp:TextBox ID="name" runat="server" CssClass="large form-poshytip" title="Enter your Full Name."></asp:TextBox>
<label>
E-Mail:<span>*</span></label>
<asp:TextBox ID="email" runat="server" CssClass="large form-poshytip" title="Enter Email Address."></asp:TextBox>
<input type="hidden" name="cmd" value="_s-xclick" />
<div id="partnerFormButton">
<br />
<asp:ImageButton runat="server" Name="btnSubmit" Text=" Next "
ID="btnSubmit"
ImageUrl="https://www.paypalobjects.com/en_GB/i/btn/btn_buynowCC_LG.gif"
onclick="btnSubmit_Click" CausesValidation="False" ></asp:ImageButton>
</div>
</div>
</form>
代码隐藏代码:
protected void btnSubmit_Click(object sender, ImageClickEventArgs e)
{
//some code
}
但问题是 OnClick 事件不会触发,它会重定向到指定的操作 URL。
可能是什么问题?
提前非常感谢...!!
ASP.NET 事件的工作方式。事件在进行回发后触发,并且您通过提交表单来阻止回发。您需要决定要做什么 - 要么使用表单提交数据(就像您现在正在做的事情一样),而不是使用 OnClick 事件,要么使用该事件并从表单中删除操作和方法参数。
http://msdn.microsoft.com/en-us/library/ms178472.aspx
进一步解释一下:单击按钮后不会立即触发事件。发生的情况是,正在向同一页面发出 POST 请求,并在 ViewState 中传递页面状态。换句话说 - 默认情况下按下 ASP.NET 中的按钮有点像指向同一页面的链接(尽管这是一个简化的解释)。只有在发出该请求并再次加载页面后,才会触发事件 - 请参阅上面的链接。
您现在正在做的是强制请求转到另一个页面。即使按钮"想要"执行回发,<form>
中的 action
参数也会将请求指向其他位置。由于未进行回发,并且未再次加载页面,因此不会触发该事件。
IISTe Technologies将为他们的学生和其他开发人员介绍一个博客,在那里他们可以找到并分享他们关于c,c ++,.NET java,PHP和其他的问题和解决方案,在这里你可以找到他们的编程问题的确切解决方案。
基本上,您已在表单标签中指定了操作。
您可以在点击事件中将页面重定向到"https://www.paypal.com/cgi-bin/webscr"。因为如果您指定操作,那么您将无法对 for 的数据求和。你不会得到这些值。
它永远不会转到您编写的点击事件代码块。因为您将页面发布到PayPal页面而不是自己。
试试这个:
- 从表单中删除操作属性。
-
将点击事件写为
受保护的无效btnSubmit_Click(对象发送器,ImageClickEventArgs e) { var 目标 = @"https://www.paypal.com/cgi-bin/webscr"; 响应状态 ="307 临时重定向"; Response.AddHeader("Location", target); }