5

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

请问我可以帮忙吗?

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

4

2 回答 2

8

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

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

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

于 2011-09-14T16:17:36.433 回答
1
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 :)
}
于 2011-09-22T16:49:09.987 回答