Возможно ли вложение <form>? - PullRequest
9 голосов
/ 04 июля 2010

на странице содержимого веб-страницы asp.net, я хотел бы включить кнопку «PayPal» «Оплатить сейчас».

Итак, у меня есть главная страница и страница с контентом.На своей странице контента я копирую и вставляю код PayPal.В частности, я использую «modalpopupextender», чтобы позволить моему пользователю купить объект.Проблема в том, что ... это не работает.Итак, мои гипотезы:

  1. Я не уверен, но я думаю, что я не могу использовать вложенный <form action>
  2. Если не первый, может быть, я не могу использовать<form action> в модальное всплывающее окно?

кто-нибудь может предложить мне «элегантные» решения для решения этой проблемы?Спасибо ...

РЕДАКТИРОВАТЬ: в частности, я пытаюсь разрешить продажу с веб-сайта.У меня есть главная страница и страница контента.Очевидно, что на главной странице у меня есть классическое «действие формы».Затем я пошел в PayPal и получил этот код: "

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<table>
<tr><td>
    <input type="hidden" name="on0" value="Annuncio Premium">Annuncio Premium
</td></tr>
<tr><td>
    <select name="os0">
        <option value="Premium 1">Premium 1 €1,00</option>
    </select>
</td></tr>
</table>
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="encrypted" value="-----BEGIN ">
<input type="image" src="https://www.paypal.com/it_IT/IT/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">
<img alt="" border="0" src="https://www.paypal.com/it_IT/i/scr/pixel.gif" width="1" height="1">
</form>

Итак, я вставил его в свою страницу контента ... как это ... без изменений. В частности, я вставил егов панели, которая будет отображать "modalpopupextender". Это работает. Но это не работает, когда я нажимаю кнопку "Купить сейчас" на PayPal. Моя веб-страница не перенаправляет на PayPal, modalpopup исчезает и ничего не происходит.

Ответы [ 5 ]

17 голосов
/ 05 июля 2010

У меня тоже была эта проблема, и я не мог поверить, что PayPal не предоставил какое-то решение для разработчиков .NET !!

Вот как я решил эту проблему:

<asp:ImageButton ID="btnPayNow" runat="server" ImageUrl="myPayPalButton.jpg" 
 PostBackUrl="https://www.paypal.com/cgi-bin/webscr" OnClick="btnPayNow_Click"/>

Используйте кнопку ImageButton или обычную кнопку и просто удалите теги формы для кода PayPal, оставьте в скрытых полях ввода, и данные будут опубликованы в URL PayPal!

Красиво и просто:)

Ps.Метод 'btnPayNow_Click ()' ничего не делает, подпись существует, но в моем коде нет логики.

3 голосов
/ 04 июля 2010

Вы совершенно правы, потому что вы не можете вкладывать <form> s.

Также нельзя использовать действие формы для создания всплывающего окна - атрибут action - это URL-адрес, на который отправляется форма.

Однако у вас может быть много <form> s.на странице, пока они не вложены.Возможно, это решит вашу проблему.

Не могли бы вы описать, чего именно вы пытаетесь достичь?Из вашего вопроса не ясно, в чем проблема.

1 голос
/ 04 июля 2010

Если я правильно понял вопрос, вы пытаетесь создать динамическое всплывающее окно HTML, которое содержит форму PayPal.У вас есть проблемы, потому что всплывающее окно содержит форму, но HTML-код для всплывающего окна уже содержится внутри формы.

Если проблема, с которой вы столкнулись, это то, что я описал выше, решение довольно простое.Вам нужно переместить весь HTML для всплывающего окна за пределы существующего элемента form.Если вы используете CSS для правильной компоновки своего сайта, должна быть возможность отображать динамическое всплывающее окно в любом месте на странице, используя относительное или абсолютное позиционирование.HTML-код для всплывающего окна не обязательно должен содержаться в другой форме.Также может быть возможно (возможно, даже необходимо) поместить содержимое всплывающего окна в iframe, который может быть представлен полностью независимо от остальной части страницы.Семантика того, как работает ваше всплывающее окно, будет зависеть от того, как вам нужна ваша страница для работы.

Итак, чтобы быть ясным ... невозможно вложить form элементов.Тем не менее, это также не является необходимым для удовлетворения ваших потребностей.

РЕДАКТИРОВАТЬ:

Чтобы улучшить ответ выше в свете обновленного вопроса.Вы можете иметь несколько панелей контента на главной странице.Должно быть вполне возможно создать другую панель контента, которая находится за пределами вашего элемента form на главной странице ... и разместить модальное всплывающее окно внутри этой альтернативной панели контента.Мой приведенный выше ответ будет применяться, поскольку у вас больше нет вложенных форм.

0 голосов
/ 26 июля 2015

Даль ответ правильный! (не принимая во внимание мой ответ)

У меня была похожая проблема в ASP.NET (4.0) при попытке отправить данные в SagePay (так же, как при публикации формы PayPal). Я писал поля формы динамически с использованием панелей в коде позади, используя

Dim Panel As New Panel
Panel.Controls.Add(New LiteralControl("My <input> controls HTML")) '1 control.add per <input> control.
MyDiv.Controls.Add(Panel)

Я также записывал всю <форму> динамически, поэтому, когда дело дошло до отладки, я не получил предупреждений относительно проблемы, что весь мой Site.Master находится внутри - это не видно со страницы .aspx, использующей мастер как шаблон! Это было довольно неприятно ... Пока я не прочитал, что у вас не может быть вложенной <формы> ... Есть только две альтернативы:

1) переместить детали формы за пределы первого, который находится на моем сайте. Мастер с самой страницы .aspx. (Мне не понравилась идея этого, грязный грязный!)

2) создайте другой элемент управления, который НЕ предназначен для публикации моих данных.


Я выбрал последнее!

<asp:Button id="btn_payment" value="Proceed to Payment" Text="Proceed to Payment" runat="server"  PostBackUrl="https://test.sagepay.com/gateway/service/vspform-register.vsp" />

Кнопка, отправленная в SagePay, забрала мои динамически сгенерированные поля (называемые со страницы .aspx), и, поскольку они уже были в моем Site.Master - все работало хорошо! - Надеюсь, это поможет любому, кто использует динамически генерируемый HTML с формами.

0 голосов
/ 04 июля 2010

Вы правы в своей первой гипотезе, у вас не может быть вложенных тегов формы на странице.

Вам просто нужно поместить код для всплывающего окна вне формы, вы можете иметь любое количество формна странице, если они не вложены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...