2010-06-23 15 views
5

Estoy utilizando ASP.NET MVC para crear una página que se publique en el entorno limitado de Paypal. Mi formulario que se publica en el sitio de Paypal está anidado dentro de un formulario principal. Estoy usando Internet Explorer 7, y por alguna razón, el formulario anidado se publica en mi máquina local en lugar del sitio de PayPal. Si agrego una copia del mismo formulario anidado directamente después del primero, el primero se publica en el host local y el segundo en el que se espera.Formulario anidado de Internet Explorer Publicar

<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

No tiene permitido anidar formularios en HTML. Tratar de hacerlo solo causa dolor a medida que los navegadores intentan recuperarse de su error. Entonces no lo intentes. – Quentin

Respuesta

11

formas anidadas no son valido, por lo que su comportamiento no está definido. Usted simplemente no puede anidarlos. Solo se puede enviar un formulario a la vez, aunque puede tener múltiples formularios sin anular en una página (sin embargo, se enviará solo el botón de envío correspondiente).

+4

+1 - Notas de W3 en los formularios aquí: http://www.w3.org/MarkUp/html3/forms.html – Fenton

0

Gestione el evento de clic de botón en el lado del servidor y publique en el sitio desde allí. Los formularios anidados no son válidos xhtml.

3

Parece que utilicé la plantilla de la página maestra ASP.NET en lugar de ASP.NET MVC. La plantilla ASP.NET incluye una etiqueta de formulario que es lo que creó esta página de formulario anidado. El uso de la plantilla ASP.NET MVC solucionó mi problema al eliminar los formularios anidados por completo.

+1

¡Este fue el comentario más útil de varias publicaciones sobre este problema en stackoverflow! – KristianB