2009-01-20 48 views

Respuesta

10

Cuando envía un formulario con un navegador, solo enviará datos para los campos dentro de ese formulario < > </form >. Esto es cierto independientemente de la tecnología de fondo que se utiliza, ya sea ASP.net, MVC.net, PHP, Python, etc.

Las únicas dos opciones que realmente puedo imaginar sería:

  1. Haga como WebForms y simplemente coloque un formulario < > alrededor de toda la página, y clasifique los resultados más tarde según el botón que se presione.
  2. Utilice Javascript/AJAX para recopilar los datos que desee y empújelos como desee. Incluso podría hacer algo de esto en tiempo real (como cuando se marca una casilla de verificación) y no causar una devolución de datos de la página.

Por supuesto, existen ventajas y desventajas para cada uno, pero esa es la naturaleza de la bestia.

+1

Gracias por su participación. me ayudó a entender cómo iba a manejar la entrada de datos con asp.net mvc – MikeJ

1

No puede. Si tiene información en la página que desea enviar, debe incluirla junto con el formulario enviado. Sin embargo, puede usar JavaScript para copiar la información de un formulario al siguiente al enviar.

2

Se podía hacerlo en el lado del cliente con una combinación de Ajax y Javascript ...

<SCRIPT language="JavaScript"> 
function submitforms() 
{ 
     new Ajax.Request(formUrl, 
     { 
      parameters: $H({param1:value,param2:value}).toQueryString(), 
      method: 'post', 
      onSuccess: function(transport) { 
       document.myform.submit(); 
      } 
     } 
} 
</SCRIPT> 
0
 var formData1 = $("#form1").serializeObject(); 
     var formData2 = $("#form2").serializeObject(); 
     $.extend(formData1, formData2); 
     var formData = JSON.stringify(formData1); 

     $.ajax({ 
      type: "POST", 
      url: "@Url.Action("MyAction", "MyController")", 
      data: formData, 
      dataType: "json", 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       ...Do something with the data 
      }, 
      error: function(result) { 
       ...Handle the error 
      } 
     }); 

A continuación, en su lado del controlador (estoy usando MVC pero WebAPI probablemente el trabajar lo mismo) puede declarar dos parámetros separados que coincidan con sus modelos del lado del cliente y todo se resolverá por usted, ¡es decir, suponiendo que no tenga nombres de propiedades superpuestos! ¡Me encanta cuando sucede la magia!

public ActionResult MyAction(FormDataModel1 formData1, FormDataModel2 formData2) 

crédito a https://github.com/macek/jquery-serialize-object para el código serializeObject.

Cuestiones relacionadas