Руины формы Paypal Мой макет веб-форм ASP.NET -> Как решить? - PullRequest
5 голосов
/ 14 сентября 2011

Я студент, который занимается простым сайтом на asp.net. Моя проблема в том, что я хочу интегрировать Paypal на одной из страниц, но у asp.net есть нелепая <form runat="server">, которая мешает мне. Я строю простой макет сайта с использованием Blueprint CSS, очень простой макет из трех столбцов. Однако мне нужен мой основной раздел контента, чтобы можно было использовать форму PayPal (кнопка «Купить сейчас»), а другие разделы сайта использовать пользовательские элементы управления, которые, как я предполагаю, требуют, чтобы они были заключены в этот раздражающий тег формы. На самом деле, я хотел бы иметь элемент управления пути к карте сайта в верхней части основного раздела сайта: что-то очень простое. Как я могу этого достичь? Моя проблема: я не могу поместить кнопку Paypal в форму, и я не знаю, как сдвинуть 4-й делитель на место. Я даже не уверен, как элементы div и формы складываются друг на друга.

Можно мне помочь, пожалуйста?

Страница с проблемой: http://clubofpep.org/sandbox/sandbox_Alumni.aspx.

Ответы [ 2 ]

7 голосов
/ 14 сентября 2011

Вопреки распространенному мнению, вы можете иметь более одной формы на страницах веб-форм ASP.Net.То, что вы не можете сделать, это иметь более одной формы с runat = "server", вложить вторую форму в основную форму ASP.Net или использовать серверные элементы управления asp.net вне главной формы.

Поэтому для интеграцииотдельная форма PayPal с остальной частью страницы веб-формы asp.net, вы должны убедиться, что вы можете поместить ее до или после всех веб-элементов управления asp.net на странице, а затем отредактироватьразметка aspx, чтобы убедиться, что ваша форма PayPal полностью вне формы asp.net.

Другое дело, что быстрый веб-поиск показывает множество элементов управления PayPal, написанных для asp.net, которые будут работать с необходимымиФорма asp.net для оплаты.Вы всегда можете попробовать один из них.

1 голос
/ 22 сентября 2011
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" /> 

Код:: 1009 *

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 :)
}
...