c# - 当我在 asp.net 中指定操作 url 时,OnClick 事件未触发

标签 c# asp.net .net web

我需要将用户重定向到 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/

相关文章:

c# - 在 NTFS 中搜索文件

c# - 如何通过我的 Web 服务运行 .exe 文件?

c# - LINQ 代码中的异步 - 说明?

c# - 您可以停止通过其调用的方法执行的按钮单击事件吗?

c# - SystemEvents.SessionSwitch 哪个用户被锁定/解锁

c# - 是否可以在简单注入(inject)器的方法中使用线程范围的生活方式

c# - 在 Repeater 中填充 DropDownList 不起作用

c# - Entity Framework 试图在数据库中将空字符串保存为 null

javascript - 错误 document.geElementById ('id' ).style.width

c# - 无法分配静态双指针变量