2011-01-24 16 views
5

Como estoy trabajando en la aplicación Asp.Net MVC, en mi aplicación estoy usando el método jQuery.POST para enviar un formulario.jQuery.POST - pase otro parámetro con Form.Serialize() - Asp.net MVC 3

p. Ej.

jQuery.post('/Product/Save', jQuery(document.forms[0]).serialize(), 
     function (data) { alert('Product Added Successfully.); } 
); 

En fragmento de código anterior, quiero pasar a otro parámetro .. digamos .. ProductID.

Por lo tanto, la idea es, quiero pasar tanto jQuery(document.forms[0]).serialize() y ProductID variable en jQuery.POST method, por lo que se puede obtener tanto Form and ProductID en mi controller's action method.

¿Alguien podría decirme que haría esto?

Gracias de antemano.

Respuesta

13

podría utilizar el following plugin para serializar la forma en un objeto JSON y añadir otros parámetros:

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name]) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

así:

var data = $('form').serializeObject(); 
data['ProductId'] = '123'; 
$.post('<%= Url.Action("Save", "Product") %>', data, function (data) { 
    alert('Product Added Successfully.'); 
}); 
0

¿Qué hay de usar el método Url.Action para construir su URL de llamada? Puede incluir los datos adicionales que necesita de esa manera.

<%: Url.Action('Save', 'Product', new { "ProductID", your product id }) %> 

Esto reemplazaría la URL codificada en su llamada al método jQuery.post.

0

¿Qué tal:

var url = '<%= Html.BuildUrlFromExpression<MyController>(c => c.Save(":productId")) %>'; 

Usted más tarde podría reemplazar la url con el valor real en su URL de publicación.

url.replace(':productId', $productId); 
Cuestiones relacionadas