【问题标题】:Paypal Form Ruins My ASP.NET webforms layout -> How to Solve?Paypal 表单破坏了我的 ASP.NET 网络表单布局 -> 如何解决?
【发布时间】:2011-11-17 04:25:55
【问题描述】:

我是一名学生,正在 asp.net 中建立一个简单的网站。我的问题是,我希望将 Paypal 集成到其中一个页面上,但是 asp.net 的 ridiculous <form runat="server"> 妨碍了我。我正在使用蓝图 css 构建一个简单的站点布局,这是一个非常基本的三列布局。但是,我需要我的主要内容部分能够使用 paypal 表单(立即购买按钮),以及网站的其他区域才能使用用户控件,我认为这需要将它们包装在那个烦人的表单标签中。事实上,我想在网站主要部分的顶部有一个站点地图路径控件:非常基本的东西。我怎样才能做到这一点?我的问题是:我无法将 Paypal 按钮放入表单中,而且我不知道如何将第 4 个 div 移动到位。我什至不确定 div 和表单是如何相互堆叠的。

请问有什么可以帮忙的吗?

有问题的页面是:http://clubofpep.org/sandbox/sandbox_Alumni.aspx

【问题讨论】:

    标签: asp.net css webforms paypal-buttons


    【解决方案1】:

    与流行的看法相反,您可以在 ASP.Net 网络表单页面上拥有多个表单。你不能做的是有多个带有 runat="server" 的表单,在 ASP.Net 的主表单中嵌套第二个表单,或者在主表单之外使用 asp.net 服务器控件。

    因此,要将单独的 paypal 表单与 asp.net webforms 页面的其余部分集成,您必须确保可以将其放在 asp.net web 的 all 之前或之后控制页面上的控件,然后编辑 aspx 标记以确保您的 paypal 表单完全在 asp.net 的表单之外。

    另一件事是,快速的网络搜索会显示大量为 asp.net 编写的 paypal 控件,这些控件将与所需的 asp.net 表单一起使用以提交付款。您可以随时尝试其中一种。

    【讨论】:

    • 我想知道
      标签是否被视为单独的 div,因为我在样式方面遇到了一些问题。另外,我似乎没有找到“大量的贝宝控件”。我发现的主要是 2. 来自 ComponentOne 的“免费”控件,它需要一个 PayPal 商业帐户,以及不太便宜的 ASP.Net Paypal Button 控件。你还知道其他人吗?
    • @Raphael - 表单标签是块级元素,就像任何其他块级元素一样。所以,是的,它有点像另一个 div 标签。 asp.net paypal control 的 google 为我返回的结果在第一页上至少有 4 个不同的控件。
    • @Joel,很好的解释。我正在发布我遇到的另一个替代方案 - 创建自定义 HtmlForm :)
    【解决方案2】:
    namespace CustomForm
    {
        public class GhostForm : System.Web.UI.HtmlControls.HtmlForm
        {
            protected bool _render;
    
            public bool RenderFormTag
            {
                get { return _render; }
                set { _render = value; }
            }
    
            public GhostForm()
            {
                //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);
            }
        }
    }
    

    用法:

    ASPX:

    <%@ Register TagPrefix="CF" Namespace="CustomForm" Assembly="CustomForm" %>
    <body>
        <CF:GhostForm id="mainForm" runat="server">
        ...
    </body>
    
    <img src="https://www.sandbox.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"> <asp:Button ID="checkoutBtn" runat="server" OnClick="CheckButton_Click"
        Text="Checkout" Width="100" CausesValidation="false" /> 
    

    代码隐藏:

    protected void Page_Load(object sender, EventArgs e)
    {
        ...
        // Workaround for PayPal form problem
        GhostForm mainForm = new GhostForm();
        mainForm.RenderFormTag = false;
        // Go ahead and submit to PayPal :)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2019-11-02
      • 2012-09-11
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多