1

我需要将用户重定向到贝宝帐户。但在此之前,我想为该用户收集姓名和电子邮件。所以我使用下面的代码。

<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。

可能是什么问题?

非常感谢您提前...!

4

4 回答 4

4

这不是 ASP.NET 事件的工作方式。回发后会触发事件,并且您通过提交表单来阻止回发。你需要决定做什么——要么用表单提交数据(就像你现在正在做的那样)而不使用 OnClick 事件,要么使用事件并从表单中删除操作和方法参数。

http://msdn.microsoft.com/en-us/library/ms178472.aspx

进一步解释:单击按钮后不会立即触发事件。发生的情况是对同一页面发出 POST 请求,页面状态在 ViewState 中传递。换句话说 - 默认情况下按下 ASP.NET 中的按钮有点像指向同一页面的链接(尽管这是一个非常简单的解释)。只有在发出该请求并再次加载页面后才会触发事件 - 请参阅上面的链接。

您现在正在做的是强制请求转到另一个页面。即使按钮“想要”进行回发,action您的参数也会<form>将请求指向其他地方。由于未进行回发并且您的页面未再次加载,因此不会触发该事件。

于 2013-09-06T05:43:17.923 回答
0

IISe Technologies 将为他们的学生和其他开发人员介绍一个博客,在那里他们可以找到并分享他们关于 c、c++、.NET java、PHP 等的问题和解决方案,在这里您可以找到他们编程问题的确切解决方案。

于 2013-09-06T05:38:36.763 回答
0

基本上,您已经在表单标签中指定了操作。

您可以在点击事件中将页面重定向到“ https://www.paypal.com/cgi-bin/webscr ”。因为如果您指定了操作,那么您将无法汇总 for 的数据。你不会得到这些值。

于 2013-09-06T05:46:12.920 回答
0

它永远不会转到您编写的单击事件代码块。因为您将页面发布到贝宝页面而不是自己。

试试这个:

  • 从表单中删除操作属性。
  • 将点击事件写为

    protected void btnSubmit_Click(object sender, ImageClickEventArgs e) { var target = @" https://www.paypal.com/cgi-bin/webscr "; Response.Status = "307 临时重定向"; Response.AddHeader("位置", 目标); }

于 2013-09-06T07:07:45.640 回答