2011-01-24 25 views
5

Podczas pracy nad aplikacją Asp.Net MVC w mojej aplikacji używam metody jQuery.POST do przesyłania formularza.jQuery.POST - przekazanie innego parametru za pomocą Form.Serialize() - Asp.net MVC 3

np.

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

W powyższym fragmencie kodu, chcę przekazać inny parametr .. powiedzmy .. ProductID.

Tak, chodzi o to, że chce przekazać zarówno jQuery(document.forms[0]).serialize() i ProductID variable w jQuery.POST method, więc mogę dostać zarówno Form and ProductID w moim controller's action method.

Czy ktokolwiek mógłby mi powiedzieć, że mógłbym to zrobić?

Dzięki z góry.

Odpowiedz

13

Można użyć following plugin do serializacji formularza do obiektu JSON i dodać kolejne parametry:

$.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; 
}; 

tak:

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

Co przy użyciu metody Url.Action do zbudowania adresu URL połączenia? Możesz dołączyć dodatkowe dane, które potrzebujesz w ten sposób.

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

To zastąpi zakodowany adres URL w wywołaniu metody jQuery.post.

0

Jak o:

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

Ty może później zastąpić adres URL rzeczywistą wartością w adresie URL twojego ogłoszenia.

url.replace(':productId', $productId); 
Powiązane problemy