2010-07-04 7 views
9

In einer Inhaltsseite einer asp.net Webseite möchte ich den "paypal" Button "Pay Now" einfügen.Ist verschachtelt <form> möglich?

Also, ich habe eine Masterseite und eine Inhaltsseite. In meiner Inhaltsseite kopiere ich den Paypal Code. Insbesondere verwende ich einen "modalpopupepetender", um meinem Benutzer zu erlauben, das Objekt zu kaufen. Das Problem ist ... es funktioniert nicht. Also meine Hypothesen sind:

  1. Ich bin nicht sicher, aber ich glaube, ich nicht einen verschachtelten <form action>
  2. Wenn nicht die ersten vielleicht verwenden kann, kann ich nicht <form action> in einen modalen Popup verwenden?

jemand kann mir eine "elegante" Lösung vorschlagen, um dies zu lösen? Vielen Dank ...

EDIT: insbesondere, was ich versuche zu tun ist, um zu erlauben, von einer Website zu verkaufen. Ich habe eine Masterseite und eine Inhaltsseite. Offenbar habe ich in Masterseite die klassische "Form Action". ich bin zu paypal Dann gegangen und bekam diesen Code ein: "

<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> 

Also habe ich es in meinem Content-Seite ... wie es klebte ... ohne Änderung Insbesondere habe ich es eingefügt. , in ein Panel, das mit einem "modalpopupxtender" zeigt. Es funktioniert. Aber was es nicht funktioniert, wenn ich auf den Paypal "Buy Now" -Button klicke. Meine Webseite nicht auf Paypal umleiten, Modalpopup verschwindet und nichts in das passiert.

Antwort

17

Ich hatte genau dieses Problem und konnte nicht glauben, dass PayPal keine Lösung für .NET-Entwickler bereitgestellt hatte !!

Hier ist, wie ich es gelöst:

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

eine Image oder normale Taste verwenden und einfach die Formular-Tags für den PayPal-Code entfernen, lassen in den verborgenen Eingabefelder und die Daten werden auf die PayPal veröffentlicht URL!

Schön und einfach :)

Ps. Die Methode 'btnPayNow_Click()' tut nichts, die Signatur existiert aber es gibt keine Logik in dem Code, den ich habe.

+0

es ist GENAU, was es mein Problem gelöst hat ... Vielen Dank und vielen Dank an andere Antwort ... sie sind alle korrekt ... – stighy

+0

Brilliant Lösung. – Seany84

+1

genial arbeiten – MonsterMMORPG

3

Sie ganz richtig sind, können Sie nicht nisten <form> s.

Noch können Sie die Formularaktion verwenden, um ein Popup zu erstellen - das action Attribut ist die URL, an die das Formular sendet.

Sie können jedoch viele <form> s auf der Seite haben, solange sie nicht verschachtelt sind. Vielleicht wird das dein Problem lösen.

Können Sie bitte genau beschreiben, was Sie erreichen möchten? Es ist nicht klar aus Ihrer Frage, was das Problem ist.

0

Sie haben Recht in Ihrer ersten Hypothese, Sie können keine verschachtelten Form-Tags auf einer Seite haben.

Sie müssen nur den Code für das Popup außerhalb des Formulars, Sie können eine beliebige Anzahl von Formularen auf der Seite haben, solange sie nicht verschachtelt sind.

1

Wenn ich die Frage richtig verstehe, versuchen Sie ein dynamisches HTML-Popup-Fenster zu erstellen, das ein PayPal-Formular enthält. Sie haben Probleme, weil das Popup ein Formular enthält, aber der HTML-Code für das Popup bereits in einem Formular enthalten ist.

Wenn das Problem, das Sie erleben, das ist, was ich oben beschrieben habe, ist die Lösung ziemlich einfach. Sie müssen den gesamten HTML-Code für das Popup-Fenster außerhalb des bestehenden Elements form verschieben. Wenn Sie CSS verwenden, um Ihre Site korrekt zu gestalten, sollte es möglich sein, Ihr dynamisches Popup an der gewünschten Position auf der Seite anzuzeigen, indem Sie relative oder absolute Positionierung verwenden. Der HTML-Code für das Popup muss nicht in einem anderen Formular enthalten sein.Es ist auch möglich (vielleicht sogar notwendig), den Inhalt des Popup in eine iframe zu setzen, die völlig unabhängig vom Rest der Seite eingereicht werden kann. Die Semantik der Funktionsweise Ihres Popups hängt davon ab, wie Ihre Seite funktionieren soll.

Also, um klar zu sein ... es ist nicht möglich, form Elemente zu verschachteln. Es ist jedoch auch nicht notwendig, Ihre Bedürfnisse zu erfüllen.

EDIT:

Um die Antwort oben im Lichte der aktualisierten Frage zu verbessern. Sie können mehrere Inhaltsbereiche auf einer Masterseite haben. Es sollte durchaus möglich sein, ein anderes Inhaltsfeld außerhalb Ihres form Elements in Ihrer Gestaltungsvorlage zu erstellen ... und Ihr modales Popup in dieses alternative Inhaltsfeld zu platzieren. Meine obige Antwort würde dann immer noch gelten, da Sie verschachtelte Formulare nicht mehr haben.

+0

Hallo Jrista. Du hast recht ... aber leider bleibt mein Problem bestehen. Dies, weil: 1. Wenn ich den "modalen popupextender" verwenden möchte, kann ich nur tun, wenn ich meinen Extender zwischen einem "form runat = server" einfügen.Aber wenn ich dies tue, bekomme ich den Fehler "nur ein Formular runat = Server pro Seite" (ich Doppelformular runat Server, der erste von Master-Seite, der zweite für Paypal-Button) ... mmm das ist ein nerviges Problem .. – stighy

+1

@stighy: Es sollte möglich sein, ein dynamisches Popup nur mit CSS und Javascript zu erstellen (ich empfehle JQuery oder Mootools). Sie sind nicht darauf beschränkt, nur ASP.NET Extender zu verwenden, um eine dynamische Website zu erreichen. Es gibt LOADS von Ressourcen im Netz, die erklären, wie man modale dynamische Popups mit JQuery erstellt ... Ich empfehle dringend, sie zu untersuchen. – jrista

0

Dals Antwort ist korrekt! (Nimmt keine Kredit mit meiner Antwort)

Ich hatte ein ähnliches Problem in ASP.NET (4.0) bei dem Versuch, Daten an SagePay (wie PayPal-Form Buchung) zu übermitteln. Ich wurde in dynamisch mit Platten in der Code-behind mit

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

die Formularfelder Schreiben Ich war die ganze < Form zu schreiben> dynamisch auch, so, wenn es um das zu Debuggen kam erhielt ich keine Warnungen in Bezug auf das Problem, das mein ganzes Site.Master befindet sich in einem - dies ist von einer ASPX-Seite aus nicht sichtbar, wenn der Master als Vorlage verwendet wird! Es war ziemlich frustrierend ... Bis ich gelesen habe, dass Sie kein geschachteltes < Formular> ... haben können, gibt es nur zwei Alternativen:

1) verschieben Sie die Formulardetails außerhalb der ersten, die in meinem Site.Master ist von der ASPX-Seite selbst. (Ich mochte die Idee nicht, chaotisch chaotisch!)

2) Erstellen Sie ein anderes Steuerelement, das ist nicht ein meine Daten zu posten.


Ich wählte die letztere!

<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" /> 

die Taste, um SagePay geschrieben, nahm Felder meine dynamisch generierte (aus der ASPX-Seite aufgerufen) und wie sie innerhalb der von meinem Site.Master schon waren - alles gut funktioniert! - Ich hoffe, dass dies jedem hilft, der dynamisch generiertes HTML mit Formularen verwendet.

Verwandte Themen