【问题标题】:How to get past embedding a html form for paypal buttons asp.net如何克服为贝宝按钮 asp.net 嵌入 html 表单
【发布时间】:2011-03-20 06:08:54
【问题描述】:

我有一些在 asp.net 网站上使用 paypal 的经验,但是这个问题让我很困惑。

问题的根源:您无法在页面表单中嵌入 paypal 按钮的 html 表单。

原始解决方案:最初我的网站使用多个 aspx 页面,因此我可以简单地排列我的表单标签,这样它们就不会被嵌入到另一个页面中。

我的网站现在使用一个包含不同 ascx 控件的主 aspx 页面。这意味着我没有在页面周围排列表单标签的选项,因此需要解决。

注意。我到处寻找简单的解决方案,但那里是一片丛林,贝宝是一场噩梦。我确实在 ghost form 上找到了一些东西,这些东西都在 c# 中。可能有帮助...

提前感谢您的帮助....

【问题讨论】:

  • 我在下面的回复中放置了“Ghost 表单”的代码。使用它,您将不需要使用 SDK 提供的 Web 服务 :-)

标签: asp.net vb.net paypal


【解决方案1】:

使用他们的 API 提交 PayPal 信息,而不是直接向他们提交表单。

这样您就可以将所有内容保留为单个表单的一部分,并在 PayPal 输入和验证方面增加一点稳健性。

PayPal: SDKs and Downloads

【讨论】:

    【解决方案2】:

    另一个支付提供商也遇到了这个问题。您可以使用他们的 API,也可以通过以下方式解决它:

    • 将结帐按钮设为标准图片按钮
    • 运行类似 ClientScript.RegisterStartupScript() 的东西来输出 HTML 和 Javascript。 HTML 应该是具有所有隐藏字段和正确 id 的实际表单。 javascript 是在页面加载和提交页面时执行的代码。

    ClientScript.RegisterStartupScript(Me.GetType(), "PaypalSubmit", "<AllMarkUp><GoesHere><script>And.Javascript</script>", False)

    希望这会有所帮助,否则您可以使用 Web 服务 API。通过采用这种方法,您正在执行回发,输出 HTML 表单(在 .NET 表单之外,因为它位于页面底部),然后依靠 javascript 实际提交它。

    【讨论】:

      【解决方案3】:

      这里有一些对你有用的东西。在您的代码隐藏中:

      // Workaround for PayPal form problem
      CustomForm mainForm = new CustomForm();
      mainForm.RenderFormTag = false;
      

      创建一个覆盖 HtmlForm 类的自定义表单类:

      public class CustomForm : System.Web.UI.HtmlControls.HtmlForm
      {
          protected bool _render;
      
          public bool RenderFormTag
          {
              get { return _render; }
              set { _render = value; }
          }
      
          public CustomForm()
          {
              //By default, show the form tag
              _render = true;
          }
      
          protected override void RenderBeginTag(HtmlTextWriter writer)
          {
              //Only render the tag when _render is set to true
              if (_render)
                  base.RenderBeginTag(writer);
          }
      
          protected override void RenderEndTag(HtmlTextWriter writer)
          {
              //Only render the tag when _render is set to true
              if (_render)
                  base.RenderEndTag(writer);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-02-02
        • 2017-12-21
        • 2012-11-30
        • 1970-01-01
        • 2020-03-17
        • 2013-02-06
        • 2015-11-01
        • 2016-08-12
        • 2017-02-27
        相关资源
        最近更新 更多