2010-06-23 18 views
5

Ich benutze ASP.NET MVC, um eine Seite zu erstellen, die in der Paypal-Sandbox sendet. Mein Formular, das auf die Paypal-Site sendet, ist in einem übergeordneten Formular verschachtelt. Ich verwende Internet Explorer 7, und aus irgendeinem Grund wird das verschachtelte Formular an meine lokale Maschine anstatt an die Paypal-Site gesendet. Wenn ich eine Kopie desselben verschachtelten Formulars direkt nach dem ersten Formular anlege, wird das erste an localhost und das zweite an die erwartete Stelle gesendet.verschachtelter Internet Explorer-Form-Beitrag

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title> 
    </title> 
</head> 
<body> 
    <form name="aspnetForm" method="post" action="" id="aspnetForm">   
     <!--First form posts locally--> 
     <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 
      <input type="submit" value="Pay"/> 
     </form>  

     <!--Second identical form posts to the expected destination--> 
     <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">  
      <input type="submit" value="Pay"/> 
     </form> 
    </form> 

+6

Sie dürfen keine Formulare in HTML verschachteln. Der Versuch, dies zu tun, führt nur zu Schmerzen, wenn Browser versuchen, sich von Ihrem Fehler zu erholen. Also versuch es nicht. – Quentin

Antwort

11

Nested Formen sind nicht vaild und damit ihr Verhalten ist nicht definiert. Du kannst sie einfach nicht verschachteln. Es kann immer nur ein Formular gleichzeitig eingereicht werden. Es können jedoch mehrere nicht verschachtelte Formulare auf einer Seite vorhanden sein (es wird jedoch nur das entsprechende Formular gesendet).

+4

+1 - W3 Hinweise zu Formularen hier: http://www.w3.org/MarkUp/html3/forms.html – Fenton

0

Behandeln Sie das Button-Click-Ereignis auf der Serverseite und veröffentlichen Sie von dort aus die Site. Verschachtelte Formulare sind ungültig xhtml.

3

Sieht so aus, als ob ich die ASP.NET-Masterseitentemplate anstelle von ASP.NET MVC verwendet habe. Die ASP.NET-Vorlage enthält ein Formular-Tag, mit dem diese verschachtelte Formularseite erstellt wurde. Mit der ASP.NET MVC-Vorlage wurde mein Problem behoben, indem die verschachtelten Formulare vollständig entfernt wurden.

+1

Dies war der hilfreichste Kommentar von mehreren Posts, die dieses Problem auf Stackoverflow ansprachen !! – KristianB