2012-05-29 13 views

Odpowiedz

37
$.post("Yourcontroller/YourAction", { FirstName : $("#txtFirstName").val(), LastName : $("#txtLastName") } ,function(data){ 
    //do whatever with the response 

}); 

nazwami ViewModel własności i parametr mijamy powinny być takie same. Tj: Twój widok model powinien mieć 2 właściwości nazywa FirstName i LastName jak jego

public class PersonViewModel 
{ 
    public string FirstName { set;get;} 
    public string LastName { set;get;} 
    // other properties 

} 

i Twojego sposobu działania Poczty powinien przyjmować parametr typu PersonViewModel

[HttpPost] 
public ActionResult YourAction(PersonViewModel model) 
{ 
    //Now check model.FirstName 
} 

Alternatywnie Jeśli widok jest zdecydowanie wpisane do PersonViewModel, wystarczy wysłać formularz zserializowaną metody działania, stosując metodę

$.post("Yourcontroller/YourAction", $("#formId").serialize() ,function(data){ 
    //do whatever with the response 

}); 
jQuery

EDIT: Zgodnie z komentarzem

Serialize zajmie własność dziecka, jak również. Zakładam, że masz klasę o nazwie Zawód jak ten

public class Profession 
{ 
    public string ProfessionName { set; get; } 
} 

A twój PersonViewModel ma właściwość typu Profession

public class PersonViewModel 
{ 
    //other properties 
    public Profession Profession { set; get; } 
    public PersonViewModel() 
    { 
     if (Profession == null) 
      Profession = new Profession(); 
    } 
} 

Dostaniesz te dane w HttpPost metoda działania, jeżeli wypełni że z widoku .

enter image description here

+0

Co zrobić, jeśli mój model zawiera jakiś viewModel jako właściwość? Na przykład Osoba ma zawód Właściwość z innymi właściwościami? – Radislav

+0

@Radislav: Tak, będzie. Sprawdź moją zaktualizowaną odpowiedź. – Shyju

+0

Exelent !!! Wielkie dzięki!!!! – Radislav

7
var myData = { 
       Parameter1: $("#someElementId").val(), 
       Parameter2: $("#anotherElementId").val(), 
       ListParameter: { /* Define IEnumerable collections as json array as well */} 
       // more params here 
      } 
$.ajax({ 
    url: 'someUrl', 
    type: 'POST', 
    dataType: "json", 
    contentType: 'application/json', 
    data: JSON.stringify(myData) 
}); 


[HttpPost] 
public JsonResult Create(CustomViewModel vm) 
{ 
    // You can access your ViewModel like a non-ajax call here. 
    var passedValue = vm.Parameter1; 
} 

Można również szeregować cały formularz i przekazywać go do metody działania kontrolera. W Tobie ajax rozmowy:

data: $('form').serialize() 
+0

Great !!! Nie wiedziałem, że to będzie prace. Dzięki. Sprawdzę i udzielę ci pomocy. – Radislav

Powiązane problemy