我需要将用户重定向到 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 中的按钮有点像指向同一页面的链接(尽管这是一个非常简单的解释)。仅在发出该请求和再次加载页面后才会触发事件 - 请参阅上面的链接。
您现在正在做的是强制请求转到另一个页面。即使按钮“想要”进行回发,action
<form>
中的参数将请求指向其他地方。由于未进行回发并且您的页面未再次加载,因此不会触发该事件。
关于c# - 当我在 asp.net 中指定操作 url 时,OnClick 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18650598/