2012-05-29 6 views

Antwort

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

}); 

Ihre Ansichtsmodell Eigenschaftsnamen und Parameter sind vorbei, wir sollten gleich sein. Dh: Ihre Ansicht Modell 2 Eigenschaften nannte seine FirstName und LastName wie

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

} 

Und Ihr Beitrag Aktion Methode sollte einen Parameter vom Typ akzeptieren PersonViewModel

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

Alternativ Wenn Ihre Ansicht stark typisiert haben sollte das PersonViewModel, können Sie das serialisierte Formular einfach an die Aktionsmethode senden, indem Sie jQuery serialize Methode

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

}); 
verwenden

EDIT: Gemäss Kommentar

Serialize Pflege des Kindes Eigentum sowie nehmen. Angenommen, Sie eine Klasse, Beruf genannt wie diese

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

Und Ihre PersonViewModel hat eine Eigenschaft vom Typ Profession

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

Sie werden diese Daten in Ihrem bekommen Httppost Aktion Methode, wenn Sie füllen das aus Ihrer Sicht .

enter image description here

+0

Was passiert, wenn mein Modell ein viewModel als Eigenschaft enthält? Zum Beispiel Person hat Eigentum Beruf mit anderen Eigenschaften? – Radislav

+0

@Radislav: Ja wird es. Überprüfen Sie meine aktualisierte Antwort. – Shyju

+0

Ausgezeichnet !!! Danke vielmals!!!! – 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; 
} 

Sie können auch die ganze Form serialisiert und an Ihre Controller-Aktion-Methode übergeben. In Sie Ajax-Aufruf:

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

Great !!! Ich wusste nicht, dass es wird funktioniert. Vielen Dank. Ich werde es überprüfen und an Sie weitergeben. – Radislav

Verwandte Themen